services.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package app
  2. import (
  3. "context"
  4. "database/sql"
  5. "github.com/kujtimiihoxha/termai/internal/db"
  6. "github.com/kujtimiihoxha/termai/internal/llm"
  7. "github.com/kujtimiihoxha/termai/internal/logging"
  8. "github.com/kujtimiihoxha/termai/internal/message"
  9. "github.com/kujtimiihoxha/termai/internal/permission"
  10. "github.com/kujtimiihoxha/termai/internal/session"
  11. "github.com/spf13/viper"
  12. )
  13. type App struct {
  14. Context context.Context
  15. Sessions session.Service
  16. Messages message.Service
  17. Permissions permission.Service
  18. LLM llm.Service
  19. Logger logging.Interface
  20. }
  21. func 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. sessions := session.NewService(ctx, q)
  27. messages := message.NewService(ctx, q)
  28. llm := llm.NewService(ctx, log, sessions, messages)
  29. return &App{
  30. Context: ctx,
  31. Sessions: sessions,
  32. Messages: messages,
  33. Permissions: permission.Default,
  34. LLM: llm,
  35. Logger: log,
  36. }
  37. }