package folderimpl import ( "context" "github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/services/folder" "github.com/grafana/grafana/pkg/setting" ) type sqlStore struct { db db.DB log log.Logger cfg *setting.Cfg fm featuremgmt.FeatureManager } // sqlStore implements the store interface. var _ store = (*sqlStore)(nil) func ProvideStore(db db.DB, cfg *setting.Cfg, features featuremgmt.FeatureManager) *sqlStore { return &sqlStore{db: db, log: log.New("folder-store"), cfg: cfg, fm: features} } func (ss *sqlStore) Create(ctx context.Context, cmd *folder.CreateFolderCommand) (*folder.Folder, error) { panic("not implemented") } func (ss *sqlStore) Delete(ctx context.Context, uid string, orgID int64) error { return ss.db.WithDbSession(ctx, func(sess *db.Session) error { _, err := sess.Exec("DELETE FROM folder WHERE folder_uid=? AND org_id=?", uid, orgID) return err }) } func (ss *sqlStore) Update(ctx context.Context, cmd *folder.UpdateFolderCommand) (*folder.Folder, error) { err := ss.db.WithDbSession(ctx, func(sess *db.Session) error { _, err := sess.ID(cmd.Folder.ID).AllCols().Update(cmd.Folder) return err }) return cmd.Folder, err } func (ss *sqlStore) Get(ctx context.Context, cmd *folder.GetFolderQuery) (*folder.Folder, error) { var foldr *folder.Folder err := ss.db.WithDbSession(ctx, func(sess *db.Session) error { exists, err := sess.Where("uid=? OR id=? OR title=?", cmd.UID, cmd.ID, cmd.Title).Get(foldr) if err != nil { return err } if !exists { return folder.ErrFolderNotFound.Errorf("folder not found") } return nil }) return foldr, err } func (ss *sqlStore) GetParents(ctx context.Context, cmd *folder.GetParentsQuery) ([]*folder.Folder, error) { panic("not implemented") } func (ss *sqlStore) GetChildren(ctx context.Context, cmd *folder.GetTreeQuery) ([]*folder.Folder, error) { var folders []*folder.Folder err := ss.db.WithDbSession(ctx, func(sess *db.Session) error { err := sess.Where("parent_uid=? AND org_id=?", cmd.UID, cmd.OrgID).Find(folders) return err }) return folders, err }