chore: build
This commit is contained in:
@@ -220,6 +220,24 @@ func (h *Handler) SetDomain(c *gin.Context) {
|
||||
}
|
||||
|
||||
// Extend : POST /demos/:id/extend — prolonge de 30 jours.
|
||||
// TransferToPremium : POST /demos/:id/premium — passe la démo en
|
||||
// abonnement payant (n'expire plus). La migration vers le namespace
|
||||
// premium-<client> tourne en tâche de fond (voir Service.TransferToPaid) :
|
||||
// la réponse reflète le changement de statut immédiat, pas la fin de la
|
||||
// migration.
|
||||
func (h *Handler) TransferToPremium(c *gin.Context) {
|
||||
d, err := h.svc.TransferToPaidByID(c.Param("id"))
|
||||
if err != nil {
|
||||
if errors.Is(err, ErrNotFound) {
|
||||
c.JSON(http.StatusNotFound, gin.H{"error": "démo introuvable"})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "erreur serveur"})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, d)
|
||||
}
|
||||
|
||||
func (h *Handler) Extend(c *gin.Context) {
|
||||
d, err := h.svc.Extend(c.Param("id"))
|
||||
if err != nil {
|
||||
|
||||
@@ -180,6 +180,22 @@ func (s *Service) TransferToPaid(username string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// TransferToPaidByID passe en premium la démo désignée par son id (résout
|
||||
// le username propriétaire puis délègue à TransferToPaid, qui opère par
|
||||
// client — un client n'a qu'une démo active à la fois, cf. Create).
|
||||
// Retourne la démo mise à jour (TypeAbo="premium" déjà appliqué ; la
|
||||
// migration de namespace tourne en tâche de fond, voir TransferToPaid).
|
||||
func (s *Service) TransferToPaidByID(id string) (Demo, error) {
|
||||
d, err := s.Get(id)
|
||||
if err != nil {
|
||||
return Demo{}, err
|
||||
}
|
||||
if err := s.TransferToPaid(d.Username); err != nil {
|
||||
return Demo{}, err
|
||||
}
|
||||
return s.Get(id)
|
||||
}
|
||||
|
||||
// urlFor construit l'URL publique d'une démo pour un namespace donné. Port
|
||||
// omis s'il s'agit du 443 standard ; sinon affiché explicitement (ex.
|
||||
// NodePort HTTPS sans LoadBalancer). Ne concerne que l'URL affichée : le
|
||||
|
||||
@@ -83,6 +83,7 @@ func New(d Deps) *gin.Engine {
|
||||
admin.DELETE("/demos/:id", d.DemosH.Delete)
|
||||
admin.POST("/demos/:id/extend", d.DemosH.Extend)
|
||||
admin.POST("/demos/:id/domain", d.DemosH.SetDomain)
|
||||
admin.POST("/demos/:id/premium", d.DemosH.TransferToPremium)
|
||||
admin.POST("/demos/details", d.DemosH.ListDetails)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user