From 770ed8cf6422d9c42be37f9ffaa7a7f110221fc0 Mon Sep 17 00:00:00 2001 From: Matthieu Haineault Date: Fri, 29 Aug 2025 09:57:12 -0400 Subject: [PATCH] fix(seeds): many fixes to match data needed to print --- .../05-employees-archive.ts | 5 ++ .../06-customers-archive.ts | 6 +++ .../07-leave-requests-future.ts | 5 ++ .../08-leave-requests-archive.ts | 48 +++++++++++++------ .../mock-seeds-scripts/11-shifts-archive.ts | 5 ++ prisma/mock-seeds-scripts/12-expenses.ts | 4 +- .../mock-seeds-scripts/13-expenses-archive.ts | 5 ++ 7 files changed, 62 insertions(+), 16 deletions(-) diff --git a/prisma/mock-seeds-scripts/05-employees-archive.ts b/prisma/mock-seeds-scripts/05-employees-archive.ts index 08e457c..1687b23 100644 --- a/prisma/mock-seeds-scripts/05-employees-archive.ts +++ b/prisma/mock-seeds-scripts/05-employees-archive.ts @@ -1,5 +1,10 @@ import { PrismaClient } from '@prisma/client'; +if (process.env.SKIP_LEAVE_REQUESTS === 'true') { + console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)"); + process.exit(0); +} + const prisma = new PrismaClient(); function daysAgo(n: number) { diff --git a/prisma/mock-seeds-scripts/06-customers-archive.ts b/prisma/mock-seeds-scripts/06-customers-archive.ts index 2f73067..31a7d01 100644 --- a/prisma/mock-seeds-scripts/06-customers-archive.ts +++ b/prisma/mock-seeds-scripts/06-customers-archive.ts @@ -1,5 +1,11 @@ // prisma/mock-seeds-scripts/06-customers-archive.ts import { PrismaClient } from '@prisma/client'; + +if (process.env.SKIP_LEAVE_REQUESTS === 'true') { + console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)"); + process.exit(0); +} + const prisma = new PrismaClient(); async function main() { diff --git a/prisma/mock-seeds-scripts/07-leave-requests-future.ts b/prisma/mock-seeds-scripts/07-leave-requests-future.ts index 54f14b8..c5dc5e2 100644 --- a/prisma/mock-seeds-scripts/07-leave-requests-future.ts +++ b/prisma/mock-seeds-scripts/07-leave-requests-future.ts @@ -1,5 +1,10 @@ import { PrismaClient, Prisma, LeaveTypes, LeaveApprovalStatus } from '@prisma/client'; +if (process.env.SKIP_LEAVE_REQUESTS === 'true') { + console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)"); + process.exit(0); +} + const prisma = new PrismaClient(); function dateOn(y: number, m: number, d: number) { diff --git a/prisma/mock-seeds-scripts/08-leave-requests-archive.ts b/prisma/mock-seeds-scripts/08-leave-requests-archive.ts index 1ef2554..d92a51f 100644 --- a/prisma/mock-seeds-scripts/08-leave-requests-archive.ts +++ b/prisma/mock-seeds-scripts/08-leave-requests-archive.ts @@ -1,44 +1,64 @@ -import { PrismaClient, LeaveTypes, LeaveApprovalStatus, LeaveRequests } from '@prisma/client'; +import { PrismaClient, LeaveApprovalStatus, LeaveRequests } from '@prisma/client'; + +if (process.env.SKIP_LEAVE_REQUESTS === 'true') { + console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)"); + process.exit(0); +} const prisma = new PrismaClient(); -function daysAgo(n:number) { +function daysAgo(n: number) { const d = new Date(); d.setUTCDate(d.getUTCDate() - n); - d.setUTCHours(0,0,0,0); + d.setUTCHours(0, 0, 0, 0); return d; } async function main() { + // 1) Récupère tous les employés const employees = await prisma.employees.findMany({ select: { id: true } }); - const bankCodes = await prisma.bankCodes.findMany({ select: { id: true }, where: { categorie: 'LEAVE' } }); + if (!employees.length) { + throw new Error('Aucun employé trouvé. Exécute le seed employees avant celui-ci.'); + } + + // 2) Va chercher les bank codes dont le type est SICK, VACATION ou HOLIDAY + const leaveCodes = await prisma.bankCodes.findMany({ + where: { type: { in: ['SICK', 'VACATION'] } }, + select: { id: true, type: true, bank_code: true }, + }); + if (!leaveCodes.length) { + throw new Error("Aucun bank code trouvé avec type in ('SICK','VACATION','HOLIDAY'). Vérifie ta table bank_codes."); + } - const types = Object.values(LeaveTypes); const statuses = Object.values(LeaveApprovalStatus); - const created: LeaveRequests[] = []; - for (let i = 0; i < 10; i++) { + // 3) Crée quelques leave requests + const COUNT = 12; + for (let i = 0; i < COUNT; i++) { const emp = employees[i % employees.length]; - const bc = bankCodes[i % bankCodes.length]; - const start = daysAgo(120 - i * 3); // tous avant aujourd'hui - const end = Math.random() < 0.4 ? null : daysAgo(119 - i * 3); + const leaveCode = leaveCodes[Math.floor(Math.random() * leaveCodes.length)]; + + const start = daysAgo(120 - i * 3); + const end = Math.random() < 0.6 ? daysAgo(119 - i * 3) : null; const lr = await prisma.leaveRequests.create({ data: { employee_id: emp.id, - bank_code_id: bc.id, - leave_type: types[i % types.length], + bank_code_id: leaveCode.id, + // on stocke le "type" tel qu’il est défini dans bank_codes + leave_type: leaveCode.type as any, start_date_time: start, end_date_time: end, - comment: `Past leave #${i+1}`, - approval_status: statuses[(i+2) % statuses.length], + comment: `Past leave #${i + 1} (${leaveCode.type})`, + approval_status: statuses[(i + 2) % statuses.length], }, }); created.push(lr); } + // 4) Archive for (const lr of created) { await prisma.leaveRequestsArchive.create({ data: { diff --git a/prisma/mock-seeds-scripts/11-shifts-archive.ts b/prisma/mock-seeds-scripts/11-shifts-archive.ts index 110031e..a6a78f8 100644 --- a/prisma/mock-seeds-scripts/11-shifts-archive.ts +++ b/prisma/mock-seeds-scripts/11-shifts-archive.ts @@ -1,5 +1,10 @@ import { PrismaClient } from '@prisma/client'; +if (process.env.SKIP_LEAVE_REQUESTS === 'true') { + console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)"); + process.exit(0); +} + const prisma = new PrismaClient(); function timeAt(h:number,m:number) { diff --git a/prisma/mock-seeds-scripts/12-expenses.ts b/prisma/mock-seeds-scripts/12-expenses.ts index c6fd430..3b4534f 100644 --- a/prisma/mock-seeds-scripts/12-expenses.ts +++ b/prisma/mock-seeds-scripts/12-expenses.ts @@ -32,7 +32,7 @@ function rndAmount(minCents: number, maxCents: number) { async function main() { // Codes autorisés (aléatoires à chaque dépense) - const BANKS = ['G517', 'G57', 'G502', 'G202', 'G234'] as const; + const BANKS = ['G517', 'G56', 'G502', 'G202', 'G234'] as const; const bcRows = await prisma.bankCodes.findMany({ where: { bank_code: { in: BANKS as unknown as string[] } }, select: { id: true, bank_code: true }, @@ -81,7 +81,7 @@ async function main() { // Montant aléatoire (ranges par défaut en $ — ajuste au besoin) // (ex.: G57 plus petit, G517 remboursement plus large) const amount = - randomCode === 'G57' + randomCode === 'G56' ? rndAmount(1000, 7500) // 10.00..75.00 : rndAmount(2000, 25000); // 20.00..250.00 pour les autres diff --git a/prisma/mock-seeds-scripts/13-expenses-archive.ts b/prisma/mock-seeds-scripts/13-expenses-archive.ts index 01ba953..8d9cc54 100644 --- a/prisma/mock-seeds-scripts/13-expenses-archive.ts +++ b/prisma/mock-seeds-scripts/13-expenses-archive.ts @@ -1,6 +1,11 @@ // 13-expenses-archive.ts import { PrismaClient, Expenses } from '@prisma/client'; +if (process.env.SKIP_LEAVE_REQUESTS === 'true') { + console.log("⏭ Seed leave-requests ignoré (SKIP_LEAVE_REQUESTS=true)"); + process.exit(0); +} + const prisma = new PrismaClient(); function daysAgo(n:number) {