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}