feat: add better auth sqlite runtime and server-side session flow

This commit is contained in:
Poyraz
2026-07-10 22:07:37 +03:00
parent 3504a02229
commit 57aab2932e
41 changed files with 4907 additions and 143 deletions
+43
View File
@@ -0,0 +1,43 @@
import fs from "node:fs";
import path from "node:path";
export function getDataConfig(env = process.env) {
const nodeEnv = env.NODE_ENV || "development";
const dataDir = path.resolve(
env.DATA_DIR && env.DATA_DIR.trim().length > 0
? env.DATA_DIR
: nodeEnv === "production"
? "/app/data"
: path.join(process.cwd(), ".data"),
);
const databasePath = path.resolve(
env.DATABASE_PATH && env.DATABASE_PATH.trim().length > 0
? env.DATABASE_PATH
: path.join(dataDir, "neta.db"),
);
return {
dataDir,
databasePath,
uploadsDir: path.join(dataDir, "uploads"),
backupsDir: path.join(dataDir, "backups"),
tmpDir: path.join(dataDir, "tmp"),
migrationsDir: path.join(process.cwd(), "server", "db", "migrations"),
};
}
export function ensureDataLayout(config = getDataConfig()) {
for (const dir of [config.dataDir, config.uploadsDir, config.backupsDir, config.tmpDir]) {
fs.mkdirSync(dir, { recursive: true });
}
return config;
}
export function applySqlitePragmas(sqlite) {
sqlite.pragma("foreign_keys = ON");
sqlite.pragma("journal_mode = WAL");
sqlite.pragma("synchronous = NORMAL");
sqlite.pragma("busy_timeout = 5000");
}