feat: add sqlite db

This commit is contained in:
sai80082
2026-03-23 10:46:46 +05:30
parent 39769391ea
commit 8b8d220b13
8 changed files with 64 additions and 1 deletions
+5
View File
@@ -28,6 +28,11 @@ yarn-error.log*
# local env files
.env*.local
# SQLite database files
/data/*.db
/data/*.db-shm
/data/*.db-wal
# vercel
.vercel
+12
View File
@@ -0,0 +1,12 @@
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "sqlite",
schema: "./src/db/schema/index.ts",
out: "./src/db/migrations",
dbCredentials: {
url: process.env.APP_DB_PATH
? `file:${process.env.APP_DB_PATH}`
: "file:./data/app.db",
},
});
+7
View File
@@ -0,0 +1,7 @@
export async function register() {
// Only run on the Node.js server, not in the Edge runtime or client
if (process.env.NEXT_RUNTIME === "nodejs") {
const { runMigrations } = await import("./src/db");
await runMigrations();
}
}
+5 -1
View File
@@ -6,7 +6,11 @@
"dev": "next dev",
"build": "next build",
"start": "next start -p ${PORT:=3000} -H ${HOST:=0.0.0.0}",
"lint": "next lint"
"lint": "next lint",
"db:generate": "drizzle-kit generate --config=drizzle.app.config.ts",
"db:migrate": "drizzle-kit migrate --config=drizzle.app.config.ts",
"db:studio": "drizzle-kit studio --config=drizzle.app.config.ts",
"db:push": "drizzle-kit push --config=drizzle.app.config.ts"
},
"author": {
"name": "Varun Raj Manoharan",
+20
View File
@@ -0,0 +1,20 @@
import { createClient } from "@libsql/client";
import { drizzle } from "drizzle-orm/libsql";
import { migrate } from "drizzle-orm/libsql/migrator";
import path from "path";
import * as schema from "./schema";
const DB_PATH =
process.env.APP_DB_PATH || path.join(process.cwd(), "data", "app.db");
const client = createClient({ url: `file:${DB_PATH}` });
export const appDb = drizzle(client, { schema });
// Run pending migrations automatically on startup.
// migrate() is idempotent — safe to call on every boot.
export async function runMigrations() {
await migrate(appDb, {
migrationsFolder: path.join(process.cwd(), "src", "db", "migrations"),
});
}
+5
View File
@@ -0,0 +1,5 @@
{
"version": "5",
"dialect": "sqlite",
"entries": []
}
+1
View File
@@ -0,0 +1 @@
export * from "./settings.schema";
+9
View File
@@ -0,0 +1,9 @@
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
export const settings = sqliteTable("settings", {
key: text("key").primaryKey(),
value: text("value").notNull(),
updatedAt: integer("updated_at", { mode: "timestamp" }).$onUpdate(
() => new Date()
),
});