package orgimpl import ( "context" "github.com/grafana/grafana/pkg/events" "github.com/grafana/grafana/pkg/services/org" "github.com/grafana/grafana/pkg/services/sqlstore" "github.com/grafana/grafana/pkg/services/sqlstore/db" "github.com/grafana/grafana/pkg/services/sqlstore/migrator" ) const MainOrgName = "Main Org." type store interface { Get(context.Context, int64) (*org.Org, error) Insert(context.Context, *org.Org) (int64, error) InsertUser(context.Context, *org.OrgUser) (int64, error) } type sqlStore struct { db db.DB dialect migrator.Dialect } func (ss *sqlStore) Get(ctx context.Context, orgID int64) (*org.Org, error) { var orga org.Org err := ss.db.WithDbSession(ctx, func(sess *sqlstore.DBSession) error { has, err := sess.Where("id=?", orgID).Get(&orga) if err != nil { return err } if !has { return org.ErrOrgNotFound } return nil }) if err != nil { return nil, err } return &orga, nil } func (ss *sqlStore) Insert(ctx context.Context, org *org.Org) (int64, error) { var orgID int64 var err error err = ss.db.WithDbSession(ctx, func(sess *sqlstore.DBSession) error { if orgID, err = sess.InsertOne(org); err != nil { return err } if org.ID != 0 { // it sets the setval in the sequence if err := ss.dialect.PostInsertId("org", sess.Session); err != nil { return err } } sess.PublishAfterCommit(&events.OrgCreated{ Timestamp: org.Created, Id: org.ID, Name: org.Name, }) return nil }) if err != nil { return 0, err } return orgID, nil } func (ss *sqlStore) InsertUser(ctx context.Context, cmd *org.OrgUser) (int64, error) { var orgID int64 var err error err = ss.db.WithDbSession(ctx, func(sess *sqlstore.DBSession) error { if orgID, err = sess.Insert(cmd); err != nil { return err } return nil }) if err != nil { return 0, err } return orgID, nil }