diff --git a/apps/api/package.json b/apps/api/package.json index 8d6ad45..57846d4 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -16,7 +16,8 @@ "db:migrate:latest": "bun run src/database/migrate.ts latest", "db:migrate:rollback": "bun run src/database/migrate.ts rollback", "db:migrate:up": "bun run src/database/migrate.ts up", - "db:migrate:down": "bun run src/database/migrate.ts down" + "db:migrate:down": "bun run src/database/migrate.ts down", + "db:migrate:reset": "bun run src/database/migrate.ts reset && bun run db:types:gen" }, "dependencies": { "@blade-and-brawn/calculator": "workspace:*", diff --git a/apps/api/src/database/migrate.ts b/apps/api/src/database/migrate.ts index b6d99b6..3d2c21c 100644 --- a/apps/api/src/database/migrate.ts +++ b/apps/api/src/database/migrate.ts @@ -56,6 +56,17 @@ const handlers: Record Promise> = } return { message: `rolled back ${count} migration(s)` }; + }, + "reset": async function (migrator: Migrator) { + if (env.NODE_ENV !== "development") throw new Error("Development only command"); + + if (typeof handlers["rollback"] !== "function") throw new Error("Missing rollback handler"); + await handlers["rollback"](migrator); + + if (typeof handlers["latest"] !== "function") throw new Error("Missing latest handler"); + await handlers["latest"](migrator); + + return { message: "database fully reset" }; } };