veza/dev-environment/templates/go/service_template.go
2025-12-03 22:56:50 +01:00

106 lines
3.2 KiB
Go

package main
import (
"context"
"fmt"
"time"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
// {{.ServiceName}}Service gère les fonctionnalités de {{.ServiceName}}
type {{.ServiceName}}Service struct {
logger *zap.Logger
// Ajoutez vos dépendances ici
}
// New{{.ServiceName}}Service crée une nouvelle instance du service
func New{{.ServiceName}}Service(logger *zap.Logger) *{{.ServiceName}}Service {
return &{{.ServiceName}}Service{
logger: logger,
}
}
// Exemple de méthode - remplacez par vos méthodes
func (s *{{.ServiceName}}Service) Process{{.ServiceName}}(ctx context.Context, input string) (string, error) {
s.logger.Info("Processing {{.ServiceName}}", zap.String("input", input))
// Implémentation de votre logique métier
result := fmt.Sprintf("Processed: %s", input)
s.logger.Info("{{.ServiceName}} processed successfully", zap.String("result", result))
return result, nil
}
// Health check pour le service
func (s *{{.ServiceName}}Service) HealthCheck() error {
s.logger.Debug("{{.ServiceName}} health check")
// Implémentation du health check
return nil
}
// {{.ServiceName}}Handler gère les endpoints HTTP pour {{.ServiceName}}
type {{.ServiceName}}Handler struct {
service *{{.ServiceName}}Service
logger *zap.Logger
}
// New{{.ServiceName}}Handler crée un nouveau handler
func New{{.ServiceName}}Handler(service *{{.ServiceName}}Service, logger *zap.Logger) *{{.ServiceName}}Handler {
return &{{.ServiceName}}Handler{
service: service,
logger: logger,
}
}
// SetupRoutes configure les routes pour ce service
func (h *{{.ServiceName}}Handler) SetupRoutes(r *gin.RouterGroup) {
r.GET("/{{.ServiceName}}", h.Get{{.ServiceName}})
r.POST("/{{.ServiceName}}", h.Create{{.ServiceName}})
r.PUT("/{{.ServiceName}}/:id", h.Update{{.ServiceName}})
r.DELETE("/{{.ServiceName}}/:id", h.Delete{{.ServiceName}})
}
// Get{{.ServiceName}} récupère les données de {{.ServiceName}}
func (h *{{.ServiceName}}Handler) Get{{.ServiceName}}(c *gin.Context) {
h.logger.Info("Get {{.ServiceName}} request")
// Implémentation
c.JSON(200, gin.H{
"message": "Get {{.ServiceName}} endpoint",
"timestamp": time.Now(),
})
}
// Create{{.ServiceName}} crée une nouvelle entrée
func (h *{{.ServiceName}}Handler) Create{{.ServiceName}}(c *gin.Context) {
h.logger.Info("Create {{.ServiceName}} request")
// Implémentation
c.JSON(201, gin.H{
"message": "Create {{.ServiceName}} endpoint",
"timestamp": time.Now(),
})
}
// Update{{.ServiceName}} met à jour une entrée existante
func (h *{{.ServiceName}}Handler) Update{{.ServiceName}}(c *gin.Context) {
h.logger.Info("Update {{.ServiceName}} request")
// Implémentation
c.JSON(200, gin.H{
"message": "Update {{.ServiceName}} endpoint",
"timestamp": time.Now(),
})
}
// Delete{{.ServiceName}} supprime une entrée
func (h *{{.ServiceName}}Handler) Delete{{.ServiceName}}(c *gin.Context) {
h.logger.Info("Delete {{.ServiceName}} request")
// Implémentation
c.JSON(200, gin.H{
"message": "Delete {{.ServiceName}} endpoint",
"timestamp": time.Now(),
})
}