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:
suntala
2023-02-09 15:49:44 +01:00
committed by GitHub
parent 8048a66e90
commit 49b3027049
47 changed files with 371 additions and 369 deletions
+47 -44
View File
@@ -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
})
}