- Fix NS/MTU/MAC/VLAN/SD variables missing proper prefixes in base_settings() Variables were passed as raw values instead of formatted pct options (e.g., '192.168.1.1' instead of '-nameserver=192.168.1.1') - Strip spaces from nameserver values to prevent 'too many arguments' error Multiple DNS servers must be comma-separated without spaces - Auto-create database directory before Prisma initialization Fixes 'Cannot open database because directory does not exist' error for manual Git installations
28 lines
961 B
TypeScript
28 lines
961 B
TypeScript
import 'dotenv/config'
|
|
import { PrismaClient } from '../../prisma/generated/prisma/client'
|
|
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'
|
|
import { existsSync, mkdirSync } from 'fs'
|
|
import { dirname } from 'path'
|
|
|
|
const globalForPrisma = globalThis as { prisma?: PrismaClient };
|
|
|
|
// Ensure database directory exists before initializing Prisma
|
|
// DATABASE_URL format: file:/path/to/database.db
|
|
const dbUrl = process.env.DATABASE_URL || 'file:./data/settings.db';
|
|
const dbPath = dbUrl.replace(/^file:/, '');
|
|
const dbDir = dirname(dbPath);
|
|
|
|
if (!existsSync(dbDir)) {
|
|
console.log(`Creating database directory: ${dbDir}`);
|
|
mkdirSync(dbDir, { recursive: true });
|
|
}
|
|
|
|
const adapter = new PrismaBetterSqlite3({ url: process.env.DATABASE_URL! });
|
|
|
|
export const prisma: PrismaClient = globalForPrisma.prisma ?? new PrismaClient({
|
|
adapter,
|
|
log: ['warn', 'error']
|
|
});
|
|
|
|
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
|