aboutsummaryrefslogtreecommitdiff
path: root/scripts/migrate.js
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2026-07-28 15:07:57 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2026-07-28 15:07:57 +0200
commit04fabf115ccea31ac504b06cc51d78423b697f60 (patch)
tree26c21f8822ccd24fce3a80b7361382c8a87d0c96 /scripts/migrate.js
parent45cc0afb734a422ee7765dc5c60dccbcc6721367 (diff)
refactor: services layer, valibot validation, shared CSS utilities, aria labels, and drizzle migrate
- Extract groceries/categories/references services with db injection - Add valibot for form validation and safe numeric id parsing - Fix category delete FK behavior with onDelete: set null + migration - Replace custom migrate.js with drizzle-orm/libsql/migrator - Add shared CSS utility classes in app.css (forms, lists, buttons) - Add aria-pressed and aria-label on interactive elements - Remove redundant app.css imports and unused /stores import - Add integration tests for all services using drizzle migrate helper - Remove smoke test; add db:migrate and db:studio scripts
Diffstat (limited to 'scripts/migrate.js')
-rw-r--r--scripts/migrate.js21
1 files changed, 5 insertions, 16 deletions
diff --git a/scripts/migrate.js b/scripts/migrate.js
index dee9411..656c752 100644
--- a/scripts/migrate.js
+++ b/scripts/migrate.js
@@ -1,22 +1,11 @@
import { createClient } from '@libsql/client';
-import { readdirSync, readFileSync } from 'node:fs';
-import { join } from 'node:path';
+import { drizzle } from 'drizzle-orm/libsql';
+import { migrate } from 'drizzle-orm/libsql/migrator';
const dbUrl = process.env.DATABASE_URL ?? 'file:./data/data.db';
const client = createClient({ url: dbUrl });
+const db = drizzle(client);
-const dir = '/app/drizzle';
-const files = readdirSync(dir)
- .filter((f) => f.endsWith('.sql'))
- .sort();
-
-for (const file of files) {
- const sql = readFileSync(join(dir, file), 'utf8');
- const stmts = sql.split('--> statement-breakpoint').filter(Boolean);
- for (const stmt of stmts) {
- await client.execute(stmt);
- }
-}
-
-console.log(`${files.length} migration(s) applied.`);
+await migrate(db, { migrationsFolder: './drizzle' });
+console.log('Migrations applied successfully');
client.close();