Chore: Remove Result field from datasources (#63048)
* Remove Result field from AddDataSourceCommand * Remove DatasourcesPermissionFilterQuery Result * Remove GetDataSourceQuery Result * Remove GetDataSourcesByTypeQuery Result * Remove GetDataSourcesQuery Result * Remove GetDefaultDataSourceQuery Result * Remove UpdateDataSourceCommand Result
This commit is contained in:
@@ -23,13 +23,13 @@ import (
|
||||
|
||||
// Store is the interface for the datasource Service's storage.
|
||||
type Store interface {
|
||||
GetDataSource(context.Context, *datasources.GetDataSourceQuery) error
|
||||
GetDataSources(context.Context, *datasources.GetDataSourcesQuery) error
|
||||
GetDataSourcesByType(context.Context, *datasources.GetDataSourcesByTypeQuery) error
|
||||
GetDefaultDataSource(context.Context, *datasources.GetDefaultDataSourceQuery) error
|
||||
GetDataSource(context.Context, *datasources.GetDataSourceQuery) (*datasources.DataSource, error)
|
||||
GetDataSources(context.Context, *datasources.GetDataSourcesQuery) ([]*datasources.DataSource, error)
|
||||
GetDataSourcesByType(context.Context, *datasources.GetDataSourcesByTypeQuery) ([]*datasources.DataSource, error)
|
||||
GetDefaultDataSource(context.Context, *datasources.GetDefaultDataSourceQuery) (*datasources.DataSource, error)
|
||||
DeleteDataSource(context.Context, *datasources.DeleteDataSourceCommand) error
|
||||
AddDataSource(context.Context, *datasources.AddDataSourceCommand) error
|
||||
UpdateDataSource(context.Context, *datasources.UpdateDataSourceCommand) error
|
||||
AddDataSource(context.Context, *datasources.AddDataSourceCommand) (*datasources.DataSource, error)
|
||||
UpdateDataSource(context.Context, *datasources.UpdateDataSourceCommand) (*datasources.DataSource, error)
|
||||
GetAllDataSources(ctx context.Context, query *datasources.GetAllDataSourcesQuery) error
|
||||
|
||||
Count(context.Context, *quota.ScopeParameters) (*quota.Map, error)
|
||||
@@ -46,17 +46,22 @@ func CreateStore(db db.DB, logger log.Logger) *SqlStore {
|
||||
|
||||
// GetDataSource adds a datasource to the query model by querying by org_id as well as
|
||||
// either uid (preferred), id, or name and is added to the bus.
|
||||
func (ss *SqlStore) GetDataSource(ctx context.Context, query *datasources.GetDataSourceQuery) error {
|
||||
func (ss *SqlStore) GetDataSource(ctx context.Context, query *datasources.GetDataSourceQuery) (*datasources.DataSource, error) {
|
||||
metrics.MDBDataSourceQueryByID.Inc()
|
||||
|
||||
return ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||
return ss.getDataSource(ctx, query, sess)
|
||||
var (
|
||||
dataSource *datasources.DataSource
|
||||
err error
|
||||
)
|
||||
return dataSource, ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||
dataSource, err = ss.getDataSource(ctx, query, sess)
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
func (ss *SqlStore) getDataSource(ctx context.Context, query *datasources.GetDataSourceQuery, sess *db.Session) error {
|
||||
func (ss *SqlStore) getDataSource(ctx context.Context, query *datasources.GetDataSourceQuery, sess *db.Session) (*datasources.DataSource, error) {
|
||||
if query.OrgID == 0 || (query.ID == 0 && len(query.Name) == 0 && len(query.UID) == 0) {
|
||||
return datasources.ErrDataSourceIdentifierNotSet
|
||||
return nil, datasources.ErrDataSourceIdentifierNotSet
|
||||
}
|
||||
|
||||
datasource := &datasources.DataSource{Name: query.Name, OrgID: query.OrgID, ID: query.ID, UID: query.UID}
|
||||
@@ -64,27 +69,27 @@ func (ss *SqlStore) getDataSource(ctx context.Context, query *datasources.GetDat
|
||||
|
||||
if err != nil {
|
||||
ss.logger.Error("Failed getting data source", "err", err, "uid", query.UID, "id", query.ID, "name", query.Name, "orgId", query.OrgID)
|
||||
return err
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return datasources.ErrDataSourceNotFound
|
||||
return nil, datasources.ErrDataSourceNotFound
|
||||
}
|
||||
|
||||
query.Result = datasource
|
||||
|
||||
return nil
|
||||
return datasource, nil
|
||||
}
|
||||
|
||||
func (ss *SqlStore) GetDataSources(ctx context.Context, query *datasources.GetDataSourcesQuery) error {
|
||||
var sess *xorm.Session
|
||||
return ss.db.WithDbSession(ctx, func(dbSess *db.Session) error {
|
||||
func (ss *SqlStore) GetDataSources(ctx context.Context, query *datasources.GetDataSourcesQuery) ([]*datasources.DataSource, error) {
|
||||
var (
|
||||
sess *xorm.Session
|
||||
dataSources []*datasources.DataSource
|
||||
)
|
||||
return dataSources, ss.db.WithDbSession(ctx, func(dbSess *db.Session) error {
|
||||
if query.DataSourceLimit <= 0 {
|
||||
sess = dbSess.Where("org_id=?", query.OrgID).Asc("name")
|
||||
} else {
|
||||
sess = dbSess.Limit(query.DataSourceLimit, 0).Where("org_id=?", query.OrgID).Asc("name")
|
||||
}
|
||||
|
||||
query.Result = make([]*datasources.DataSource, 0)
|
||||
return sess.Find(&query.Result)
|
||||
return sess.Find(&dataSources)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -96,31 +101,30 @@ func (ss *SqlStore) GetAllDataSources(ctx context.Context, query *datasources.Ge
|
||||
}
|
||||
|
||||
// GetDataSourcesByType returns all datasources for a given type or an error if the specified type is an empty string
|
||||
func (ss *SqlStore) GetDataSourcesByType(ctx context.Context, query *datasources.GetDataSourcesByTypeQuery) error {
|
||||
func (ss *SqlStore) GetDataSourcesByType(ctx context.Context, query *datasources.GetDataSourcesByTypeQuery) ([]*datasources.DataSource, error) {
|
||||
if query.Type == "" {
|
||||
return fmt.Errorf("datasource type cannot be empty")
|
||||
return nil, fmt.Errorf("datasource type cannot be empty")
|
||||
}
|
||||
|
||||
query.Result = make([]*datasources.DataSource, 0)
|
||||
return ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||
dataSources := make([]*datasources.DataSource, 0)
|
||||
return dataSources, ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||
if query.OrgID > 0 {
|
||||
return sess.Where("type=? AND org_id=?", query.Type, query.OrgID).Asc("id").Find(&query.Result)
|
||||
return sess.Where("type=? AND org_id=?", query.Type, query.OrgID).Asc("id").Find(&dataSources)
|
||||
}
|
||||
return sess.Where("type=?", query.Type).Asc("id").Find(&query.Result)
|
||||
return sess.Where("type=?", query.Type).Asc("id").Find(&dataSources)
|
||||
})
|
||||
}
|
||||
|
||||
// GetDefaultDataSource is used to get the default datasource of organization
|
||||
func (ss *SqlStore) GetDefaultDataSource(ctx context.Context, query *datasources.GetDefaultDataSourceQuery) error {
|
||||
datasource := datasources.DataSource{}
|
||||
return ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||
exists, err := sess.Where("org_id=? AND is_default=?", query.OrgID, true).Get(&datasource)
|
||||
func (ss *SqlStore) GetDefaultDataSource(ctx context.Context, query *datasources.GetDefaultDataSourceQuery) (*datasources.DataSource, error) {
|
||||
dataSource := datasources.DataSource{}
|
||||
return &dataSource, ss.db.WithDbSession(ctx, func(sess *db.Session) error {
|
||||
exists, err := sess.Where("org_id=? AND is_default=?", query.OrgID, true).Get(&dataSource)
|
||||
|
||||
if !exists {
|
||||
return datasources.ErrDataSourceNotFound
|
||||
}
|
||||
|
||||
query.Result = &datasource
|
||||
return err
|
||||
})
|
||||
}
|
||||
@@ -130,13 +134,12 @@ func (ss *SqlStore) GetDefaultDataSource(ctx context.Context, query *datasources
|
||||
func (ss *SqlStore) DeleteDataSource(ctx context.Context, cmd *datasources.DeleteDataSourceCommand) error {
|
||||
return ss.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error {
|
||||
dsQuery := &datasources.GetDataSourceQuery{ID: cmd.ID, UID: cmd.UID, Name: cmd.Name, OrgID: cmd.OrgID}
|
||||
errGettingDS := ss.getDataSource(ctx, dsQuery, sess)
|
||||
ds, errGettingDS := ss.getDataSource(ctx, dsQuery, sess)
|
||||
|
||||
if errGettingDS != nil && !errors.Is(errGettingDS, datasources.ErrDataSourceNotFound) {
|
||||
return errGettingDS
|
||||
}
|
||||
|
||||
ds := dsQuery.Result
|
||||
if ds != nil {
|
||||
// Delete the data source
|
||||
result, err := sess.Exec("DELETE FROM data_source WHERE org_id=? AND id=?", ds.OrgID, ds.ID)
|
||||
@@ -148,7 +151,7 @@ func (ss *SqlStore) DeleteDataSource(ctx context.Context, cmd *datasources.Delet
|
||||
|
||||
// Remove associated AccessControl permissions
|
||||
if _, errDeletingPerms := sess.Exec("DELETE FROM permission WHERE scope=?",
|
||||
ac.Scope(datasources.ScopeProvider.GetResourceScope(dsQuery.Result.UID))); errDeletingPerms != nil {
|
||||
ac.Scope(datasources.ScopeProvider.GetResourceScope(ds.UID))); errDeletingPerms != nil {
|
||||
return errDeletingPerms
|
||||
}
|
||||
}
|
||||
@@ -219,8 +222,10 @@ func (ss *SqlStore) Count(ctx context.Context, scopeParams *quota.ScopeParameter
|
||||
return u, nil
|
||||
}
|
||||
|
||||
func (ss *SqlStore) AddDataSource(ctx context.Context, cmd *datasources.AddDataSourceCommand) error {
|
||||
return ss.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error {
|
||||
func (ss *SqlStore) AddDataSource(ctx context.Context, cmd *datasources.AddDataSourceCommand) (*datasources.DataSource, error) {
|
||||
var ds *datasources.DataSource
|
||||
|
||||
return ds, ss.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error {
|
||||
existing := datasources.DataSource{OrgID: cmd.OrgID, Name: cmd.Name}
|
||||
has, _ := sess.Get(&existing)
|
||||
|
||||
@@ -240,7 +245,7 @@ func (ss *SqlStore) AddDataSource(ctx context.Context, cmd *datasources.AddDataS
|
||||
cmd.UID = uid
|
||||
}
|
||||
|
||||
ds := &datasources.DataSource{
|
||||
ds = &datasources.DataSource{
|
||||
OrgID: cmd.OrgID,
|
||||
Name: cmd.Name,
|
||||
Type: cmd.Type,
|
||||
@@ -278,8 +283,6 @@ func (ss *SqlStore) AddDataSource(ctx context.Context, cmd *datasources.AddDataS
|
||||
}
|
||||
}
|
||||
|
||||
cmd.Result = ds
|
||||
|
||||
sess.PublishAfterCommit(&events.DataSourceCreated{
|
||||
Timestamp: time.Now(),
|
||||
Name: cmd.Name,
|
||||
@@ -302,13 +305,14 @@ func updateIsDefaultFlag(ds *datasources.DataSource, sess *db.Session) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ss *SqlStore) UpdateDataSource(ctx context.Context, cmd *datasources.UpdateDataSourceCommand) error {
|
||||
return ss.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error {
|
||||
func (ss *SqlStore) UpdateDataSource(ctx context.Context, cmd *datasources.UpdateDataSourceCommand) (*datasources.DataSource, error) {
|
||||
var ds *datasources.DataSource
|
||||
return ds, ss.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error {
|
||||
if cmd.JsonData == nil {
|
||||
cmd.JsonData = simplejson.New()
|
||||
}
|
||||
|
||||
ds := &datasources.DataSource{
|
||||
ds = &datasources.DataSource{
|
||||
ID: cmd.ID,
|
||||
OrgID: cmd.OrgID,
|
||||
Name: cmd.Name,
|
||||
@@ -372,7 +376,6 @@ func (ss *SqlStore) UpdateDataSource(ctx context.Context, cmd *datasources.Updat
|
||||
}
|
||||
}
|
||||
|
||||
cmd.Result = ds
|
||||
return err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user