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.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { pathToFileURL } from 'node:url';
|
||||||
import { drizzle } from 'drizzle-orm/libsql';
|
import { drizzle } from 'drizzle-orm/libsql';
|
||||||
import { migrate } from 'drizzle-orm/libsql/migrator';
|
import { migrate } from 'drizzle-orm/libsql/migrator';
|
||||||
import { createClient } from '@libsql/client';
|
import { createClient } from '@libsql/client';
|
||||||
@@ -10,8 +11,9 @@ export async function runMigrations(): Promise<void> {
|
|||||||
client.close();
|
client.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Allow running directly: `tsx src/db/migrate.ts`
|
// Allow running directly: `tsx src/db/migrate.ts` (cross-platform — pathToFileURL
|
||||||
if (import.meta.url === `file://${process.argv[1]}`) {
|
// 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()
|
runMigrations()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log('Migrations applied.');
|
console.log('Migrations applied.');
|
||||||
|
|||||||
Reference in New Issue
Block a user