services.go

 1package app
 2
 3import (
 4	"context"
 5	"database/sql"
 6
 7	"github.com/kujtimiihoxha/termai/internal/db"
 8	"github.com/kujtimiihoxha/termai/internal/logging"
 9	"github.com/kujtimiihoxha/termai/internal/session"
10	"github.com/spf13/viper"
11)
12
13type App struct {
14	Context context.Context
15
16	Sessions session.Service
17
18	Logger logging.Interface
19}
20
21func New(ctx context.Context, conn *sql.DB) *App {
22	q := db.New(conn)
23	log := logging.NewLogger(logging.Options{
24		Level: viper.GetString("log.level"),
25	})
26	return &App{
27		Context:  ctx,
28		Sessions: session.NewService(ctx, q),
29		Logger:   log,
30	}
31}