106 lines
2.5 KiB
Go
106 lines
2.5 KiB
Go
package cmd
|
|
|
|
import (
|
|
"time"
|
|
|
|
"trankilou.fr/lassistanoque/backend/internal/adapter/auth/password"
|
|
"trankilou.fr/lassistanoque/backend/internal/adapter/database"
|
|
"trankilou.fr/lassistanoque/backend/internal/adapter/file"
|
|
"trankilou.fr/lassistanoque/backend/internal/adapter/llm"
|
|
"trankilou.fr/lassistanoque/backend/internal/adapter/security"
|
|
"trankilou.fr/lassistanoque/backend/internal/adapter/tools/weather"
|
|
"trankilou.fr/lassistanoque/backend/internal/domain"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/auth"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/chat"
|
|
"trankilou.fr/lassistanoque/backend/internal/service/storage"
|
|
)
|
|
|
|
var db database.Database
|
|
var store storage.StorageProvider
|
|
var userRepository domain.UserRepository
|
|
var providerRepository domain.ProviderRepository
|
|
var agentRepository domain.AgentRepository
|
|
var chatRepository domain.ChatRepository
|
|
var settingsRepository domain.SettingsRepository
|
|
var authenticators = make(map[string]auth.Authenticator)
|
|
var tokenManager auth.TokenManager
|
|
var llmengine domain.LLMEngine
|
|
|
|
func init() {
|
|
var err error
|
|
|
|
db, err := database.GetDatabase()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = db.Migrate()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// repositories
|
|
userRepository = db.UserRepository()
|
|
providerRepository = db.ProviderRepository()
|
|
agentRepository = db.AgentRepository()
|
|
chatRepository = db.ChatRepository()
|
|
settingsRepository = db.SettingsRepository()
|
|
|
|
// storage
|
|
store, err = file.GetStorageProvider(db.FileRepository())
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// authentication
|
|
tokenManager = security.NewJwtTokenManager(12*time.Hour, 7*24*time.Hour, "lassistanoque")
|
|
pwdAuth := password.NewPasswordAuthenticator(tokenManager, GetUserRepository())
|
|
authenticators["password"] = pwdAuth
|
|
|
|
// llm
|
|
llmengine = llm.NewAnyLLMEngine()
|
|
|
|
// llm tools
|
|
chat.RegisterTool(&weather.WeatherTool{})
|
|
}
|
|
|
|
func GetStorageProvider() storage.StorageProvider {
|
|
return store
|
|
}
|
|
|
|
func GetUserRepository() domain.UserRepository {
|
|
return userRepository
|
|
}
|
|
|
|
func GetProviderRepository() domain.ProviderRepository {
|
|
return providerRepository
|
|
}
|
|
|
|
func GetAgentRepository() domain.AgentRepository {
|
|
return agentRepository
|
|
}
|
|
|
|
func GetChatRepository() domain.ChatRepository {
|
|
return chatRepository
|
|
}
|
|
|
|
func GetSettingsRepository() domain.SettingsRepository {
|
|
return settingsRepository
|
|
}
|
|
|
|
func GetAuthenticators() map[string]auth.Authenticator {
|
|
return authenticators
|
|
}
|
|
|
|
func GetTokenManager() auth.TokenManager {
|
|
return tokenManager
|
|
}
|
|
|
|
func GetLLMEngine() domain.LLMEngine {
|
|
return llmengine
|
|
}
|
|
|
|
func Close() {
|
|
db.Close()
|
|
}
|