opencode/internal/app/services.go
2025-03-26 01:12:30 +01:00

44 lines
1 KiB
Go

package app
import (
"context"
"database/sql"
"github.com/kujtimiihoxha/termai/internal/db"
"github.com/kujtimiihoxha/termai/internal/llm"
"github.com/kujtimiihoxha/termai/internal/logging"
"github.com/kujtimiihoxha/termai/internal/message"
"github.com/kujtimiihoxha/termai/internal/permission"
"github.com/kujtimiihoxha/termai/internal/session"
"github.com/spf13/viper"
)
type App struct {
Context context.Context
Sessions session.Service
Messages message.Service
Permissions permission.Service
LLM llm.Service
Logger logging.Interface
}
func New(ctx context.Context, conn *sql.DB) *App {
q := db.New(conn)
log := logging.NewLogger(logging.Options{
Level: viper.GetString("log.level"),
})
sessions := session.NewService(ctx, q)
messages := message.NewService(ctx, q)
llm := llm.NewService(ctx, log, sessions, messages)
return &App{
Context: ctx,
Sessions: sessions,
Messages: messages,
Permissions: permission.Default,
LLM: llm,
Logger: log,
}
}