Dev, Test, and Prod DBs separated. .env is unified now.

This commit is contained in:
AG
2025-12-07 20:27:29 +02:00
parent 2f035b48de
commit 34900aebdd
11 changed files with 85 additions and 12 deletions

View File

@@ -23,11 +23,27 @@ const app = express();
// Ensure a default admin user exists on startup
// -------------------------------------------------------------------
async function ensureAdminUser() {
const adminEmail = process.env.ADMIN_EMAIL;
const adminPassword = process.env.ADMIN_PASSWORD;
const mode = process.env.APP_MODE || 'dev';
let adminEmail, adminPassword;
switch (mode) {
case 'test':
adminEmail = process.env.ADMIN_EMAIL_TEST;
adminPassword = process.env.ADMIN_PASSWORD_TEST;
break;
case 'prod':
adminEmail = process.env.ADMIN_EMAIL_PROD;
adminPassword = process.env.ADMIN_PASSWORD_PROD;
break;
case 'dev':
default:
adminEmail = process.env.ADMIN_EMAIL_DEV;
adminPassword = process.env.ADMIN_PASSWORD_DEV;
break;
}
if (!adminEmail || !adminPassword) {
console.warn('⚠️ ADMIN_EMAIL or ADMIN_PASSWORD not set in .env. Skipping default admin creation.');
console.warn(`⚠️ Admin credentials for mode ${mode} not found in .env. Skipping default admin creation.`);
return;
}

View File

@@ -10,10 +10,32 @@ declare global {
var prisma: PrismaClient | undefined;
}
const dbUrl = process.env.DATABASE_URL;
const mode = process.env.APP_MODE || 'dev';
console.log(`[Prisma] Initializing in ${mode.toUpperCase()} mode`);
let dbUrl: string | undefined;
switch (mode) {
case 'test':
dbUrl = process.env.DATABASE_URL_TEST;
break;
case 'prod':
dbUrl = process.env.DATABASE_URL_PROD;
break;
case 'dev':
default:
dbUrl = process.env.DATABASE_URL_DEV;
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;
}
if (!dbUrl) {
throw new Error("DATABASE_URL environment variable is not set. Please check your .env file.");
throw new Error(`DATABASE_URL environment variable is not set for mode ${mode}. Please check your .env file.`);
}
console.log('Initializing Prisma Adapter with URL:', dbUrl);

View File

@@ -396,7 +396,7 @@ router.post('/active/log-set', async (req: any, res) => {
});
if (plan) {
const planExercises: { id: string }[] = JSON.parse(plan.exercises);
const planExercises: { id: string }[] = JSON.parse(plan.exercises || '[]');
const allPerformedSets = await prisma.workoutSet.findMany({
where: { sessionId: activeSession.id }
});