fix(runtime): run migrations before app startup

This commit is contained in:
poyrazavsever
2026-07-17 09:38:03 +03:00
parent 8cd3de8e1f
commit 46a746d2d4
3 changed files with 19 additions and 1 deletions
+2 -1
View File
@@ -47,10 +47,11 @@ openssl rand -base64 32
Üretilen secret'ı `.env.local` içindeki `BETTER_AUTH_SECRET` alanına koyun, ardından: Üretilen secret'ı `.env.local` içindeki `BETTER_AUTH_SECRET` alanına koyun, ardından:
```bash ```bash
pnpm db:migrate
pnpm dev pnpm dev
``` ```
`pnpm dev` ve `pnpm start`, Next.js başlamadan önce bekleyen SQLite migration'larını otomatik ve idempotent olarak uygular. Migration'ı uygulamadan bağımsız çalıştırmak için `pnpm db:migrate` kullanılabilir.
`http://localhost:3000/register` adresinden ilk owner hesabını oluşturun. İlk başarılı kurulumdan sonra public kayıt atomik olarak kapanır. `http://localhost:3000/register` adresinden ilk owner hesabını oluşturun. İlk başarılı kurulumdan sonra public kayıt atomik olarak kapanır.
## Environment sözleşmesi ## Environment sözleşmesi
+2
View File
@@ -3,8 +3,10 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"predev": "node scripts/migrate.mjs",
"dev": "next dev", "dev": "next dev",
"build": "next build", "build": "next build",
"prestart": "node scripts/migrate.mjs",
"start": "next start", "start": "next start",
"lint": "eslint .", "lint": "eslint .",
"typecheck": "tsc --noEmit", "typecheck": "tsc --noEmit",
+15
View File
@@ -1,4 +1,5 @@
import assert from "node:assert/strict"; import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import Database from "better-sqlite3"; import Database from "better-sqlite3";
import { ensureDataLayout } from "./lib/data-dir.mjs"; import { ensureDataLayout } from "./lib/data-dir.mjs";
import { runMigrations } from "./migrate.mjs"; import { runMigrations } from "./migrate.mjs";
@@ -24,6 +25,20 @@ const requiredIndexes = [
async function main() { async function main() {
const paths = ensureDataLayout(); const paths = ensureDataLayout();
const packageJson = JSON.parse(
readFileSync(new URL("../package.json", import.meta.url), "utf8"),
);
assert.equal(
packageJson.scripts?.predev,
"node scripts/migrate.mjs",
"pnpm dev must apply migrations before starting Next.js",
);
assert.equal(
packageJson.scripts?.prestart,
"node scripts/migrate.mjs",
"pnpm start must apply migrations before starting Next.js",
);
runMigrations(paths.databasePath); runMigrations(paths.databasePath);