feat(api-detail): isCurrent + setCurrent + màj doc et seeder
- Shared types : ajout isCurrent sur ApiEntry et ApiEntryListItem - Backend entity : colonne is_current (boolean, default true) - Backend service : isCurrent calculé à la création, setCurrent() marque une version comme courante (siblings → false) - Backend controller : POST /api/apis/:id/set-current - Frontend ApiService : méthode setCurrent() - Browse/upload : affichage badge "Courante" via isCurrent - Seeder : données de démo mises à jour - Documentation : api-reference, architecture, local-setup, CLAUDE.md Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
@@ -138,6 +138,65 @@ Des exemples sont disponibles dans `documentation/` :
|
||||
|
||||
---
|
||||
|
||||
## Fixtures & re-seed
|
||||
|
||||
Les données de démo (catégories + APIs) sont définies dans `back/src/modules/seeder/seeder.service.ts`.
|
||||
|
||||
### Structure des fixtures
|
||||
|
||||
```
|
||||
E-commerce (racine)
|
||||
└─ Produits
|
||||
└─ Commandes
|
||||
└─ Notifications
|
||||
Infrastructure (racine)
|
||||
└─ Événements
|
||||
Identité & Accès (racine)
|
||||
└─ Authentification
|
||||
```
|
||||
|
||||
5 APIs de démo y sont rattachées (Petstore, Streetlights Kafka, Account Service, Orders, Auth JWT).
|
||||
|
||||
### Modifier les fixtures
|
||||
|
||||
Éditer directement `back/src/modules/seeder/seeder.service.ts` :
|
||||
|
||||
- **Catégories** : bloc `categoryRepo.save(categoryRepo.create({...}))` dans la méthode `seed()`. Utiliser `parentId: null` pour une racine, ou `parentId: autreCategorie.id` pour un enfant.
|
||||
- **APIs** : tableau passé à `apiRepo.save([...])`. Chaque entrée référence une catégorie via `categoryId`.
|
||||
- **YAML** : les constantes en haut du fichier (`PETSTORE_YAML`, `ORDERS_YAML`, etc.) contiennent le YAML inliné de chaque API.
|
||||
|
||||
### Régénérer la base de données
|
||||
|
||||
Le seeder est **idempotent** : il ne s'exécute pas si la table `api_entries` contient déjà des lignes.
|
||||
|
||||
Pour forcer un re-seed complet (vide tout et recrée), utiliser la variable `FORCE_RESEED=true` :
|
||||
|
||||
**Avec Docker :**
|
||||
```bash
|
||||
docker compose -f infra/docker-compose.yml stop backend
|
||||
docker compose -f infra/docker-compose.yml run --rm -e FORCE_RESEED=true backend
|
||||
```
|
||||
|
||||
**Sans Docker (local) :**
|
||||
```bash
|
||||
cd back
|
||||
FORCE_RESEED=true pnpm run start:dev
|
||||
```
|
||||
|
||||
Ou via `back/.env` :
|
||||
```env
|
||||
FORCE_RESEED=true
|
||||
```
|
||||
> Penser à retirer `FORCE_RESEED=true` du `.env` après le redémarrage, sinon la base sera réinitialisée à chaque démarrage.
|
||||
|
||||
Le seeder supprime toutes les entrées `api_entries` et `categories`, nettoie le répertoire `docs-output`, puis recrée tout depuis `seed()`. Les logs confirment l'opération :
|
||||
```
|
||||
[Seeder] Reset complet — données supprimées, docs nettoyées.
|
||||
[Seeder] 8 catégories et 5 APIs de démo créées — génération docs en cours...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- **Schéma DB** : TypeORM crée et synchronise automatiquement les tables au démarrage (mode `synchronize: true` hors production). Aucune migration manuelle nécessaire.
|
||||
|
||||
Reference in New Issue
Block a user