gestion des providers
This commit is contained in:
1 parent
357bf9b41c
commit
4d72952b2c
46 files changed
+995
-150
No files matched your search
@@ -0,0 +1,76 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"trankilou.fr/lassistanoque/backend/internal/domain"
|
||||
)
|
||||
|
||||
type Service struct {
|
||||
repo domain.ProviderRepository
|
||||
repoUser domain.UserRepository
|
||||
llmengine domain.LLMEngine
|
||||
}
|
||||
|
||||
func NewService(
|
||||
repo domain.ProviderRepository,
|
||||
repoUser domain.UserRepository,
|
||||
llmengine domain.LLMEngine,
|
||||
) *Service {
|
||||
return &Service{
|
||||
repo,
|
||||
repoUser,
|
||||
llmengine,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Service) ListProviderTypes() []domain.Item {
|
||||
return s.llmengine.ListProviderTypes()
|
||||
}
|
||||
|
||||
func (s *Service) ListProviders(userID string, teamID string) ([]*domain.Provider, error) {
|
||||
return s.repo.ListProviders(userID, teamID)
|
||||
}
|
||||
|
||||
func (s *Service) GetProvider(userID string, teamID string, id string) (*domain.Provider, error) {
|
||||
return s.repo.GetProvider(userID, teamID, id)
|
||||
}
|
||||
|
||||
func (s *Service) CreateProvider(userID string, provider *domain.Provider) (*domain.Provider, error) {
|
||||
|
||||
if _, err := s.repoUser.FindUserTeam(userID, provider.TeamID); err != nil {
|
||||
return nil, fmt.Errorf("error finding user in team: %s", err)
|
||||
}
|
||||
|
||||
return s.repo.CreateProvider(userID, provider)
|
||||
}
|
||||
|
||||
func (s *Service) UpdateProvider(userID string, provider *domain.Provider) (*domain.Provider, error) {
|
||||
if _, err := s.repoUser.FindUserTeam(userID, provider.TeamID); err != nil {
|
||||
return nil, fmt.Errorf("error finding user in team: %s", err)
|
||||
}
|
||||
|
||||
if _, err := s.repo.GetProvider(userID, provider.TeamID, provider.ID); err != nil {
|
||||
return nil, fmt.Errorf("error finding provider: %s", err)
|
||||
}
|
||||
|
||||
return s.repo.UpdateProvider(userID, provider)
|
||||
}
|
||||
|
||||
func (s *Service) DeleteProvider(userID string, teamID string, id string) error {
|
||||
if _, err := s.repoUser.FindUserTeam(userID, teamID); err != nil {
|
||||
return fmt.Errorf("error finding user in team: %s", err)
|
||||
}
|
||||
|
||||
if _, err := s.repo.GetProvider(userID, teamID, id); err != nil {
|
||||
return fmt.Errorf("error finding provider: %s", err)
|
||||
}
|
||||
|
||||
return s.repo.DeleteProvider(userID, teamID, id)
|
||||
|
||||
}
|
||||
|
||||
func (s *Service) ListAvailableModels(ctx context.Context, provider *domain.Provider) ([]string, error) {
|
||||
return s.llmengine.ListModelsFromProvider(ctx, provider)
|
||||
}
|
||||
@@ -27,6 +27,30 @@ func (s *Service) GetUser(id string) (*domain.User, error) {
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (s *Service) GetUserWithTeams(id string) (*domain.UserWithTeams, error) {
|
||||
u, err := s.GetUser(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
teams, err := s.repo.ListTeams(u.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
userTeams, err := s.repo.ListUserTeams(u.ID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ut := &domain.UserWithTeams{
|
||||
User: u,
|
||||
UserTeams: userTeams,
|
||||
Teams: teams,
|
||||
}
|
||||
return ut, nil
|
||||
}
|
||||
|
||||
func (s *Service) UpdateUser(updUser *domain.User, fromAdmin bool) (*domain.User, error) {
|
||||
user, err := s.repo.FindUser(updUser.ID)
|
||||
if err != nil {
|
||||
|
||||
Reference in new issue
Block a user