This is a proof-of-concept (POC) project for using Drizzle ORM with SQLite, PostgreSQL, and MySQL databases. It demonstrates the capabilities of Drizzle ORM and shows how you can easily switch between different types of databases.
- Node.js
- Docker w/ Docker Compose
- pnpm
- Clone this repository
git clone https://github.com/constrod/poc-drizzle-sqlite-pg-mysql.git
- Navigate to the project directory
cd poc-drizzle-sqlite-pg-mysql
- Install dependencies
pnpm install
- Create
.env
file and use.env.example
as a template
Example:
STAGE="dev"
SQLITE_DB_NAME="db/sqlite.db"
- Start development server
pnpm dev
- Run
db:init
script to initialize the DB
pnpm db:init
[INFO]: Initializing databases setup
[INFO]: Creating SQLite database in ./databases/sqlite/.db
[INFO]: Databases setup completed!
- Generate and push schemas
pnpm sqlite:generate
pnpm sqlite:push
- Generate and populate with seed (fake) data (sqlite by default)
pnpm db:seed
src/
: Source code directorysrc/env.ts
: Environment variablessrc/db/{db_type}/schema.ts
: Schema definitionssrc/db/client.ts
: Database client configurationsdocker-compose.yaml
: Docker-compose file for PostgreSQL and MySQLdrizzle.{db_type}.config.ts
: Drizzle configuration files for SQLite, PostgreSQL, and MySQLsetup/
: Setup scripts and etc.
The package.json
includes several scripts to interact with each database:
Create or ensure you have an databases/sqlite
folder
- Generate Schema:
pnpm sqlite:generate
- Push Schema:
pnpm sqlite:push
- Introspect Database:
pnpm sqlite:introspect
- Drop Database:
pnpm sqlite:drop
- Check Migration Status:
pnpm sqlite:check
- Apply Migrations:
pnpm sqlite:up
- Open Drizzle Studio:
pnpm sqlite:studio
- Generate Schema:
pnpm pg:generate
- Push Schema:
pnpm pg:push
- Introspect Database:
pnpm pg:introspect
- Drop Database:
pnpm pg:drop
- Check Migration Status:
pnpm pg:check
- Apply Migrations:
pnpm pg:up
- Open Drizzle Studio:
pnpm pg:studio
- Generate Schema:
pnpm mysql:generate
- Push Schema:
pnpm mysql:push
- Introspect Database:
pnpm mysql:introspect
- Drop Database:
pnpm mysql:drop
- Check Migration Status:
pnpm mysql:check
- Apply Migrations:
pnpm mysql:up
- Open Drizzle Studio:
pnpm mysql:studio
To start the PostgreSQL and MySQL databases, run:
pnpm db:start
To stop them, run:
pnpm db:stop