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}