1package backend
2
3import (
4 "context"
5
6 "github.com/charmbracelet/log"
7 "github.com/charmbracelet/soft-serve/server/config"
8 "github.com/charmbracelet/soft-serve/server/db"
9 "github.com/charmbracelet/soft-serve/server/store"
10)
11
12// Backend is the Soft Serve backend that handles users, repositories, and
13// server settings management and operations.
14type Backend struct {
15 ctx context.Context
16 cfg *config.Config
17 db *db.DB
18 store store.Store
19 logger *log.Logger
20 cache *cache
21}
22
23// New returns a new Soft Serve backend.
24func New(ctx context.Context, cfg *config.Config, db *db.DB) *Backend {
25 dbstore := store.FromContext(ctx)
26 logger := log.FromContext(ctx).WithPrefix("backend")
27 b := &Backend{
28 ctx: ctx,
29 cfg: cfg,
30 db: db,
31 store: dbstore,
32 logger: logger,
33 }
34
35 // TODO: implement a proper caching interface
36 cache := newCache(b, 1000)
37 b.cache = cache
38
39 return b
40}