database.go

 1package database
 2
 3import (
 4	"context"
 5
 6	"github.com/charmbracelet/log"
 7	"github.com/charmbracelet/soft-serve/pkg/config"
 8	"github.com/charmbracelet/soft-serve/pkg/db"
 9	"github.com/charmbracelet/soft-serve/pkg/store"
10)
11
12type datastore struct {
13	ctx    context.Context
14	cfg    *config.Config
15	db     *db.DB
16	logger *log.Logger
17
18	*settingsStore
19	*repoStore
20	*userStore
21	*orgStore
22	*teamStore
23	*collabStore
24	*lfsStore
25	*accessTokenStore
26	*webhookStore
27	*handleStore
28}
29
30// New returns a new store.Store database.
31func New(ctx context.Context, db *db.DB) store.Store {
32	cfg := config.FromContext(ctx)
33	logger := log.FromContext(ctx).WithPrefix("store")
34	handles := &handleStore{}
35
36	s := &datastore{
37		ctx:    ctx,
38		cfg:    cfg,
39		db:     db,
40		logger: logger,
41
42		settingsStore:    &settingsStore{},
43		repoStore:        &repoStore{},
44		userStore:        &userStore{handles},
45		orgStore:         &orgStore{handles},
46		teamStore:        &teamStore{},
47		collabStore:      &collabStore{},
48		lfsStore:         &lfsStore{},
49		accessTokenStore: &accessTokenStore{},
50		webhookStore:     &webhookStore{},
51		handleStore:      handles,
52	}
53
54	return s
55}