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