agrattan
DTDrizzle Team
•Created by benjiman86 on 6/6/2023 in #help
Share migrations in monorepo
If anyone comes here looking for an example solution, this is what I got:
Got this script command in my
Then here's an example
Thanks for the great discussion everyone!
migrate.ts
in my database package
import { drizzle } from "drizzle-orm/postgres-js";
import { migrate } from "drizzle-orm/postgres-js/migrator";
import dotenv from "dotenv";
import postgres from "postgres";
// Load .env file before importing db
dotenv.config();
const client = postgres(
process.env.DATABASE_URL ?? ""
);
const migrationDB = drizzle(client);
async function runDatabaseMigrations() {
try {
await migrate(migrationDB, { migrationsFolder: "./drizzle" });
console.log("Migration completed! ✅");
process.exit();
} catch (error) {
console.error("Migration failed! ❌");
console.error(error);
}
}
runDatabaseMigrations();
import { drizzle } from "drizzle-orm/postgres-js";
import { migrate } from "drizzle-orm/postgres-js/migrator";
import dotenv from "dotenv";
import postgres from "postgres";
// Load .env file before importing db
dotenv.config();
const client = postgres(
process.env.DATABASE_URL ?? ""
);
const migrationDB = drizzle(client);
async function runDatabaseMigrations() {
try {
await migrate(migrationDB, { migrationsFolder: "./drizzle" });
console.log("Migration completed! ✅");
process.exit();
} catch (error) {
console.error("Migration failed! ❌");
console.error(error);
}
}
runDatabaseMigrations();
package.json
"db:migrate:run": "ts-node migrate.ts"
"db:migrate:run": "ts-node migrate.ts"
.yml
for a GitHub Action
name: Run Development Database Migrations
on:
push:
branches: ["dev"]
jobs:
build:
name: Build and Run Migrations
timeout-minutes: 15
runs-on: ubuntu-latest
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} # I use Turborepo
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
DATABASE_URL: ${{ secrets.DEV_DATABASE_URL }}
steps:
- name: :construction_site: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 2
- uses: pnpm/[email protected]
with:
version: 6.32.2
- name: :construction_site: Setup Node.js environment
uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: :construction_worker: Install dependencies
run: pnpm install
- name: :hiking_boot: Run db migrations
working-directory: "./packages/database"
run: pnpm db:migrate:run
name: Run Development Database Migrations
on:
push:
branches: ["dev"]
jobs:
build:
name: Build and Run Migrations
timeout-minutes: 15
runs-on: ubuntu-latest
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} # I use Turborepo
TURBO_TEAM: ${{ vars.TURBO_TEAM }}
DATABASE_URL: ${{ secrets.DEV_DATABASE_URL }}
steps:
- name: :construction_site: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 2
- uses: pnpm/[email protected]
with:
version: 6.32.2
- name: :construction_site: Setup Node.js environment
uses: actions/setup-node@v3
with:
node-version: 18
cache: "pnpm"
- name: :construction_worker: Install dependencies
run: pnpm install
- name: :hiking_boot: Run db migrations
working-directory: "./packages/database"
run: pnpm db:migrate:run
13 replies