diff --git a/push-server/package-lock.json b/push-server/package-lock.json index ee63da2..a7be6b5 100644 --- a/push-server/package-lock.json +++ b/push-server/package-lock.json @@ -14907,6 +14907,7 @@ "@types/node": "^24.3.0", "@types/pg": "^8.15.5", "drizzle-kit": "^0.31.8", + "tsx": "^4.22.3", "typescript": "^5.9.2" } } diff --git a/push-server/packages/db/package.json b/push-server/packages/db/package.json index 4e6ea3a..49dc14c 100644 --- a/push-server/packages/db/package.json +++ b/push-server/packages/db/package.json @@ -6,7 +6,7 @@ "main": "src/index.ts", "scripts": { "db:generate": "drizzle-kit generate", - "db:migrate": "drizzle-kit migrate", + "db:migrate": "tsx src/migrate.ts", "typecheck": "tsc --noEmit" }, "dependencies": { @@ -17,6 +17,7 @@ "@types/node": "^24.3.0", "@types/pg": "^8.15.5", "drizzle-kit": "^0.31.8", + "tsx": "^4.22.3", "typescript": "^5.9.2" } } diff --git a/push-server/packages/db/src/migrate.ts b/push-server/packages/db/src/migrate.ts new file mode 100644 index 0000000..28b9274 --- /dev/null +++ b/push-server/packages/db/src/migrate.ts @@ -0,0 +1,21 @@ +import "dotenv/config"; +import { dirname, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { migrate } from "drizzle-orm/node-postgres/migrator"; +import { drizzle } from "drizzle-orm/node-postgres"; +import pg from "pg"; + +const { Pool } = pg; + +const databaseUrl = process.env.DATABASE_URL || "postgres://fedeo_push:fedeo_push@localhost:5442/fedeo_push"; +const migrationsFolder = resolve(dirname(fileURLToPath(import.meta.url)), "../drizzle"); + +const pool = new Pool({ connectionString: databaseUrl }); +const db = drizzle(pool); + +try { + await migrate(db, { migrationsFolder }); + console.log("Migrationen erfolgreich angewendet."); +} finally { + await pool.end(); +}