feat: add better auth sqlite runtime and server-side session flow
This commit is contained in:
@@ -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");
|
||||
}
|
||||
Reference in New Issue
Block a user