fix: multiple error
This commit is contained in:
@@ -11,9 +11,10 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
ErrCapacityReached = errors.New("capacité maximale de démos atteinte")
|
||||
ErrNotFound = errors.New("démo introuvable")
|
||||
ErrNotExtendable = errors.New("démo non prolongeable dans son état actuel")
|
||||
ErrCapacityReached = errors.New("capacité maximale de démos atteinte")
|
||||
ErrNotFound = errors.New("démo introuvable")
|
||||
ErrNotExtendable = errors.New("démo non prolongeable dans son état actuel")
|
||||
ErrUserHasActiveDemo = errors.New("ce client a déjà une démo active")
|
||||
)
|
||||
|
||||
// Config du service (injectable pour les tests).
|
||||
@@ -50,8 +51,22 @@ func NewService(store Store, pool Pool, prov Provisioner, cfg Config) *Service {
|
||||
}
|
||||
|
||||
// Create réserve la capacité + le pool, persiste la démo et déclenche le worker.
|
||||
// username (optionnel) rattache la démo à un client existant.
|
||||
// username (optionnel) rattache la démo à un client existant. Un client n'a
|
||||
// droit qu'à une seule démo active à la fois.
|
||||
func (s *Service) Create(leadID, username string) (Demo, error) {
|
||||
normalizedUsername := auth.NormalizeUsername(username)
|
||||
if normalizedUsername != "" {
|
||||
existing, err := s.store.ListByUsername(normalizedUsername)
|
||||
if err != nil {
|
||||
return Demo{}, err
|
||||
}
|
||||
for _, d := range existing {
|
||||
if d.Status.Active() {
|
||||
return Demo{}, ErrUserHasActiveDemo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
active, err := s.store.CountActive()
|
||||
if err != nil {
|
||||
return Demo{}, err
|
||||
@@ -63,7 +78,7 @@ func (s *Service) Create(leadID, username string) (Demo, error) {
|
||||
id := uuid.NewString()
|
||||
demo := Demo{
|
||||
ID: id,
|
||||
Username: auth.NormalizeUsername(username),
|
||||
Username: normalizedUsername,
|
||||
LeadID: leadID,
|
||||
Status: StatusPending,
|
||||
Namespace: "demo-" + shortID(id),
|
||||
|
||||
Reference in New Issue
Block a user