Database & Migrations
Managing database schemas, migrations, and seeds.
Monorepo Boilerplate uses PostgreSQL as its primary data store and TypeORM for object-relational mapping.
Connection
The database connection is configured in apps/api/src/common/database/database.module.ts. It reads credentials from environment variables (DB_HOST, DB_PORT, DB_USERNAME, etc.).
Migrations
We use database migrations to manage schema changes over time. This ensures that the database schema is version-controlled and can be replicated across different environments (dev, staging, prod).
Running Migrations
To apply pending migrations:
pnpm migration:runCreating Migrations
To generate a new migration based on changes to your entities:
pnpm migration:generate --name=NameOfMigrationTo create an empty migration file:
pnpm migration:create --name=NameOfMigrationReverting Migrations
To undo the last migration:
pnpm migration:revertSeeding
Seeding allows us to populate the database with initial or test data.
To run the seeds:
pnpm db:seedThe seed script is located at apps/api/src/common/database/seeds/run-seed.ts.