Work with DB fixed including default Admin creation

This commit is contained in:
aodulov
2025-12-12 11:51:57 +02:00
parent bc1b747ef4
commit 3ede054766
14 changed files with 106 additions and 106 deletions

View File

@@ -1,7 +1,5 @@
import { PrismaClient } from '@prisma/client';
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
// Ensure env vars are loaded
import 'dotenv/config';
declare global {
@@ -13,44 +11,46 @@ declare global {
const mode = process.env.APP_MODE || 'dev';
console.log(`[Prisma] Initializing in ${mode.toUpperCase()} mode`);
let dbUrl: string | undefined;
let dbPath: string;
switch (mode) {
case 'test':
dbUrl = process.env.DATABASE_URL_TEST;
dbPath = process.env.DATABASE_URL_TEST || './test.db';
break;
case 'prod':
dbUrl = process.env.DATABASE_URL_PROD;
dbPath = process.env.DATABASE_URL_PROD || './prod.db';
break;
case 'dev':
default:
dbUrl = process.env.DATABASE_URL_DEV;
dbPath = process.env.DATABASE_URL_DEV || './dev.db';
break;
}
// Fallback to generic DATABASE_URL if specific one is missing
if (!dbUrl) {
console.warn(`[Prisma] DATABASE_URL_${mode.toUpperCase()} not found, falling back to DATABASE_URL`);
dbUrl = process.env.DATABASE_URL;
// Remove 'file:' prefix if present
if (dbPath.startsWith('file:')) {
dbPath = dbPath.slice(5);
}
if (!dbUrl) {
throw new Error(`DATABASE_URL environment variable is not set for mode ${mode}. Please check your .env file.`);
console.log('Initializing Prisma Client with database:', dbPath);
let prisma: PrismaClient;
try {
const adapter = new PrismaBetterSqlite3({ url: dbPath });
prisma =
global.prisma ||
new PrismaClient({
adapter: adapter as any,
});
} catch (e: any) {
console.error('Failed to initialize Prisma Client:', e.message);
process.exit(1);
}
console.log('Initializing Prisma Adapter with URL:', dbUrl);
// Use the options object as required by the library definitions
const adapter = new PrismaBetterSqlite3({ url: dbUrl });
const prisma =
global.prisma ||
new PrismaClient({
adapter,
});
if (process.env.NODE_ENV !== 'production') {
global.prisma = prisma;
}
export default prisma;

View File

@@ -10,7 +10,11 @@ export const validate = (schema: ZodSchema<any>) => async (req: Request, res: Re
params: req.params,
});
return next();
} catch (error) {
return sendError(res, `Validation Error: ${JSON.stringify(error)}`, 400);
} catch (error: any) {
console.error('Validation error:', {
body: req.body,
error: error.errors || error
});
return sendError(res, `Validation Error: ${JSON.stringify(error.errors || error)}`, 400);
}
};