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}