From efff2214d44384ae4b025bad17230b5b96f8fafd Mon Sep 17 00:00:00 2001 From: Bas van Rossem Date: Wed, 17 Jun 2026 14:07:41 +0200 Subject: [PATCH] fix(api): make migrate.ts direct-run guard work on Windows The guard compared import.meta.url against `file://${process.argv[1]}`, which never matches on Windows (argv[1] is a drive-letter/backslash path), so `yarn db:migrate` silently no-opped for local non-Docker dev. Use pathToFileURL(process.argv[1]).href instead, which is correct on Windows and Linux alike. Verified `yarn db:migrate` now creates all tables on Windows; the Docker start path is unaffected. --- apps/api/src/db/migrate.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/api/src/db/migrate.ts b/apps/api/src/db/migrate.ts index 53b8427..562a9bf 100644 --- a/apps/api/src/db/migrate.ts +++ b/apps/api/src/db/migrate.ts @@ -1,3 +1,4 @@ +import { pathToFileURL } from 'node:url'; import { drizzle } from 'drizzle-orm/libsql'; import { migrate } from 'drizzle-orm/libsql/migrator'; import { createClient } from '@libsql/client'; @@ -10,8 +11,9 @@ export async function runMigrations(): Promise { client.close(); } -// Allow running directly: `tsx src/db/migrate.ts` -if (import.meta.url === `file://${process.argv[1]}`) { +// Allow running directly: `tsx src/db/migrate.ts` (cross-platform — pathToFileURL +// handles Windows drive-letter/backslash paths, which a raw `file://` prefix does not). +if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { runMigrations() .then(() => { console.log('Migrations applied.');