Écrire au carnet

Exercice 2 sur 3 du chapitre 4 · 100 XP · 2 objectifs vérifiés par des tests

Notions abordées : Query builderInsertConversion de type

Le carnet se lit, il reste à y écrire : une commande prise dans l'application doit entrer dans la table, et plus seulement dans la mémoire.

Votre mission

  1. Dans Store, après la validation, insérez la commande dans la table livraisons avec facades.DB().
  2. Répondez 201 avec la livraison, et le numéro que la base lui a donné.
  3. Une commande invalide répond toujours 422, et n'écrit rien.
  4. La tournée en mémoire, la slice livraisons, n'a plus de raison d'être : retirez-la.

Rappel

InsertGetID(données) insère une ligne et renvoie le numéro que SQLite lui a attribué, ici 6, puisque le carnet en compte déjà 5. Les données sont une map[string]any, des colonnes vers leurs valeurs. Pour plusieurs lignes à la fois, Insert prend une slice de maps.

Go ne convertit jamais un type numérique en un autre sans qu'on le demande : un int64 ne va pas dans un int. int(id) fait la conversion. C'est une des règles qui étonnent en venant de PHP, et qui évitent bien des surprises ensuite.