La tournée en mémoire s'efface à chaque redémarrage, et Margot perd ses commandes. Son neveu a ouvert un carnet : une table SQLite livraisons, avec la tournée du jour et l'Épicerie de la Lune, qui vient de signer. Dans un vrai projet, elle garderait tout ; ici, dans le navigateur, database/carnet.go la remet à neuf à chaque démarrage. Il a aussi ajouté au contrôleur une fonction erreurServeur, qui répond 500.
Votre mission
- Dans
Index, lisez les livraisons dans la tablelivraisons, triées par numéro, avecfacades.DB(). - Gardez le filtre
?quartier=: il devient une condition de la requête. Sans livraison, la réponse reste[]. - Dans
Show, lisez la livraison dans la table. Un numéro inconnu répond toujours 404. Storeécrit encore dans la tournée en mémoire : ce sera le prochain exercice.
Rappel
facades.DB() est le query builder de Goravel, le DB::table() de Laravel : Table("livraisons").Where("quartier", "confluence").OrderBy("id").Get(&resultat). Get remplit une slice, First une seule struct. On leur passe l'adresse de la variable, &resultat, pour qu'ils puissent l'écrire.
Le tag db:"client" fait le lien entre une colonne et un champ, comme json:"client" le fait avec une clé JSON (sans tag, Goravel cherche la colonne du même nom en snake_case). Une struct peut porter les deux.
Chaque requête peut échouer, et renvoie une error : if err := query.Get(&resultat); err != nil { … } la vérifie sur la même ligne. La fonction erreurServeur du fichier répond alors 500.
Dans un vrai projet, la table viendrait d'une migration (go run . artisan make:migration) et ses données d'un seeder ; ici, sans console, database/carnet.go les crée au démarrage.