fix(runtime): run migrations before app startup
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user