Sous le capot : le code Go que DSB génère
« Code généré » veut souvent dire « code qu'il ne faut jamais lire ». Le nôtre est l'inverse — voici exactement ce qui sort du studio.
Toute promesse sur la propriété du code vaut exactement ce que vaut le code généré. Alors lisons-en. Quand vous modélisez une entité Order avec des lignes et un total, DSB écrit un service Go ordinaire :
// generated/internal/service/order.go
func (s *OrderService) Total(ctx context.Context, id int64) (Money, error) {
lines, err := s.repo.LinesByOrder(ctx, id)
if err != nil {
return Money{}, fmt.Errorf("order %d: %w", id, err)
}
var total Money
for _, l := range lines {
total = total.Add(l.UnitPrice.Mul(l.Qty).Discount(l.DiscountPct))
}
return total, nil
}Pas de soupe de réflexion, pas de runtime géant qui dispatche sur des chaînes, pas d'annotations que seul un éditeur comprend. Les erreurs sont des erreurs Go enveloppées ; l'argent est un type dédié, pas un flottant.
La forme d'un projet généré
internal/model— des structs qui reflètent votre ERD, avec la validation dérivée de vos types de champs ;internal/repo— des repositories surdatabase/sql, du SQL lisible et des migrations versionnées ;internal/service— un service par agrégat, où la logique des workflows atterrit en fonctions ordinaires ;internal/http— les handlers et les routes du frontend React, JSON en entrée, JSON en sortie ;cmd/app— un seulmain.goqui assemble le tout et compile en un binaire par plateforme.
Les workflows deviennent des fonctions
Un workflow visuel compile vers une fonction Go dont les étapes apparaissent dans l'ordre, vos nœuds script inclus tels quels. Parcourez-la pas à pas dans le studio ou dans n'importe quel débogueur Go — c'est le même code.
Pourquoi c'est important
Parce qu'un jour, vous — ou votre successeur — ouvrirez ce projet sans DSB installé. Vous trouverez un module Go qui compile avec go build, se teste avec go test, et se lit comme le code d'un collègue soigneux. C'est tout l'enjeu : le studio doit mériter sa place chaque jour — le code, lui, ne vous prend jamais en otage.