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() }