github.com/crowdsecurity/crowdsec@v1.6.1/pkg/database/config.go (about)

     1  package database
     2  
     3  import (
     4  	"github.com/pkg/errors"
     5  
     6  	"github.com/crowdsecurity/crowdsec/pkg/database/ent"
     7  	"github.com/crowdsecurity/crowdsec/pkg/database/ent/configitem"
     8  )
     9  
    10  func (c *Client) GetConfigItem(key string) (*string, error) {
    11  	result, err := c.Ent.ConfigItem.Query().Where(configitem.NameEQ(key)).First(c.CTX)
    12  	if err != nil && ent.IsNotFound(err) {
    13  		return nil, nil
    14  	}
    15  	if err != nil {
    16  		return nil, errors.Wrapf(QueryFail, "select config item: %s", err)
    17  	}
    18  
    19  	return &result.Value, nil
    20  }
    21  
    22  func (c *Client) SetConfigItem(key string, value string) error {
    23  
    24  	nbUpdated, err := c.Ent.ConfigItem.Update().SetValue(value).Where(configitem.NameEQ(key)).Save(c.CTX)
    25  	if (err != nil && ent.IsNotFound(err)) || nbUpdated == 0 { //not found, create
    26  		err := c.Ent.ConfigItem.Create().SetName(key).SetValue(value).Exec(c.CTX)
    27  		if err != nil {
    28  			return errors.Wrapf(QueryFail, "insert config item: %s", err)
    29  		}
    30  	} else if err != nil {
    31  		return errors.Wrapf(QueryFail, "update config item: %s", err)
    32  	}
    33  	return nil
    34  }