diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..41be97e --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,13 @@ +import 'dotenv/config'; +import { defineConfig } from 'drizzle-kit'; + +const databaseUrl = process.env.DATABASE_URL ?? 'postgresql://samreshu:samreshu_dev@localhost:5432/samreshu'; + +export default defineConfig({ + schema: './src/db/schema/index.ts', + out: './src/db/migrations', + dialect: 'postgresql', + dbCredentials: { + url: databaseUrl, + }, +}); diff --git a/src/db/migrate.ts b/src/db/migrate.ts new file mode 100644 index 0000000..6965165 --- /dev/null +++ b/src/db/migrate.ts @@ -0,0 +1,19 @@ +import { drizzle } from 'drizzle-orm/node-postgres'; +import { migrate } from 'drizzle-orm/node-postgres/migrator'; +import pg from 'pg'; +import { env } from '../config/env.js'; + +const { Pool } = pg; + +async function runMigrations() { + const pool = new Pool({ connectionString: env.DATABASE_URL }); + const db = drizzle(pool); + + await migrate(db, { migrationsFolder: './src/db/migrations' }); + await pool.end(); +} + +runMigrations().catch((err) => { + console.error('Migration failed:', err); + process.exit(1); +});