Datepicker redesign + DB connection fixes for Prod

This commit is contained in:
AG
2025-12-18 20:49:34 +02:00
parent 3a8f132b91
commit b6cb3059af
10 changed files with 472 additions and 78 deletions

View File

@@ -35,13 +35,36 @@ console.log('Initializing Prisma Client with database:', dbPath);
let prisma: PrismaClient;
// In Prisma 7, PrismaBetterSqlite3 is a factory.
// We use a wrapper to intercept the connection and disable WAL mode
// for NAS/Network share compatibility (journal_mode = DELETE).
try {
const adapter = new PrismaBetterSqlite3({ url: dbPath });
const factory = new PrismaBetterSqlite3({ url: dbPath });
const adapterWrapper = {
provider: 'sqlite',
adapterName: '@prisma/adapter-better-sqlite3',
async connect() {
const adapter = (await factory.connect()) as any;
if (adapter.client) {
console.log('[Prisma] Setting journal_mode = DELETE for NAS compatibility');
adapter.client.pragma('journal_mode = DELETE');
}
return adapter;
},
async connectToShadowDb() {
const adapter = (await factory.connectToShadowDb()) as any;
if (adapter.client) {
adapter.client.pragma('journal_mode = DELETE');
}
return adapter;
}
};
prisma =
global.prisma ||
new PrismaClient({
adapter: adapter as any,
adapter: adapterWrapper as any,
});
} catch (e: any) {
console.error('Failed to initialize Prisma Client:', e.message);