Skip to content

Persistencia

La elección de base de datos ocurre solo en el scaffolding (create-bb-app wizard o --database). El proyecto generado incluye un único stack (XOR): nunca ambos, nunca un flag runtime DATABASE_DRIVER.

PostgreSQL + TypeORM

Incluido con --database=postgres.

  • Entities *Entity.ts bajo infrastructure/persistence/
  • Wiring vía OrmSwitcherModule + repositorio TypeORM
  • UserRepositoryModule.init({ disable }) selecciona Memory vs TypeORM
  • Migraciones bajo src/database/migrations/nunca synchronize: true en config compartida
  • Seeders bajo src/database/seeders/ (pnpm seed)
  • Local: pnpm docker:uppnpm migration:run (opcional pnpm seed)

Health check de BD

bash
GET /api/v1/health-check/database

MongoDB + Mongoose

Incluido con --database=mongo.

  • Schemas *Schema.ts, UserRepositoryMongo, MongoSwitcherModule
  • Compose con perfil mongo (pnpm docker:up)
  • Sin migraciones TypeORM — arranca y desarrolla tras pnpm install

Puertos de dominio

El dominio se mantiene puro:

  • Interfaces de repositorio en domain/repositories/
  • Token de DI (p. ej. USER_REPOSITORY_TOKEN)
  • El use case inyecta el puerto; el adapter vive en infrastructure
  • Mapear domain ↔ persistence en el adapter; no filtrar tipos ORM/ODM a application

Reglas

  1. No meter TypeORM/Mongoose en domain/ ni en use cases más allá del puerto.
  2. Cambios de schema Postgres → nueva migración, no reescribir migraciones ya aplicadas.
  3. En tests, preferir Memory / fakes; e2e alineado con el bootstrap real.

MIT License · Scaffold from backend-boiler