49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package sqlstore
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"xorm.io/xorm"
|
|
)
|
|
|
|
const dataKeysTable = "data_keys"
|
|
|
|
func (ss *SqlStore) GetDataKey(ctx context.Context, name string) (*models.DataKey, error) {
|
|
return getDataKey(ctx, name, ss.engine)
|
|
}
|
|
|
|
func (ss *SqlStore) CreateDataKey(ctx context.Context, dataKey models.DataKey) error {
|
|
dataKey.Created = time.Now()
|
|
dataKey.Updated = dataKey.Created
|
|
|
|
if !dataKey.Active {
|
|
return fmt.Errorf("cannot insert deactivated data keys")
|
|
}
|
|
|
|
_, err := ss.engine.Context(ctx).Table(dataKeysTable).InsertOne(dataKey)
|
|
return err
|
|
}
|
|
|
|
func (ss *SqlStore) DeleteDataKey(ctx context.Context, name string) error {
|
|
_, err := ss.engine.Context(ctx).Table(dataKeysTable).Delete(models.DataKey{Name: name})
|
|
return err
|
|
}
|
|
|
|
func getDataKey(ctx context.Context, name string, engine *xorm.Engine) (*models.DataKey, error) {
|
|
dataKey := &models.DataKey{Name: name, Active: true}
|
|
exists, err := engine.Context(ctx).Table(dataKeysTable).Get(dataKey)
|
|
|
|
if err != nil {
|
|
sqlog.Error("Failed getting data key", "err", err, "name", name)
|
|
return nil, fmt.Errorf("failed getting data key: %w", err)
|
|
}
|
|
if !exists {
|
|
return nil, models.ErrDataKeyNotFound
|
|
}
|
|
|
|
return dataKey, nil
|
|
}
|