Datepicker redesign + DB connection fixes for Prod
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user