From 42060ad9b452c8bd817b7ba2ede602b55276e5cd Mon Sep 17 00:00:00 2001 From: Matthieu Haineault Date: Thu, 27 Nov 2025 15:24:03 -0500 Subject: [PATCH] fix(prefs): small fix --- scripts/migrate-expenses.ts | 286 +++++++++++++------------- scripts/migrate-shifts.ts | 376 +++++++++++++++++----------------- scripts/migrate-timesheets.ts | 208 +++++++++---------- scripts/migration.service.ts | 34 +-- 4 files changed, 452 insertions(+), 452 deletions(-) diff --git a/scripts/migrate-expenses.ts b/scripts/migrate-expenses.ts index e552d5d..3f111d7 100644 --- a/scripts/migrate-expenses.ts +++ b/scripts/migrate-expenses.ts @@ -1,165 +1,165 @@ -import { PrismaClient as Prisma } from "@prisma/client"; -import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" -import { toDateFromString, toHHmmFromDate, toStringFromDate } from "src/common/utils/date-utils"; +// import { PrismaClient as Prisma } from "@prisma/client"; +// import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" +// import { toDateFromString, toHHmmFromDate, toStringFromDate } from "src/common/utils/date-utils"; -const prisma_legacy = new PrismaLegacy({}); -const prisma = new Prisma({}); +// const prisma_legacy = new PrismaLegacy({}); +// const prisma = new Prisma({}); -type NewEmployee = { - id: number; - company_code: number; - external_payroll_id: number; -} +// type NewEmployee = { +// id: number; +// company_code: number; +// external_payroll_id: number; +// } -type OldExpense = { - time_sheet_id: string | null; - date: string | null; - code: string | null; - description: string | null; - value: number | null; - status: boolean | null; -} +// type OldExpense = { +// time_sheet_id: string | null; +// date: string | null; +// code: string | null; +// description: string | null; +// value: number | null; +// status: boolean | null; +// } -export const extractOldExpenses = async () => { - for (let id = 1; id <= 61; id++) { +// export const extractOldExpenses = async () => { +// for (let id = 1; id <= 61; id++) { - console.log(`Start of Expense migration ***************************************************************`); +// console.log(`Start of Expense migration ***************************************************************`); - const new_employee = await findOneNewEmployee(id); - console.log(`Employee ${id} found in new DB`); +// const new_employee = await findOneNewEmployee(id); +// console.log(`Employee ${id} found in new DB`); - const new_timesheets = await findManyNewTimesheets(new_employee.id); - console.log(`New Timesheets found for employee ${id}`); +// const new_timesheets = await findManyNewTimesheets(new_employee.id); +// console.log(`New Timesheets found for employee ${id}`); - const old_employee_id = await findOneOldEmployee(new_employee); - console.log(`Employee ${new_employee.id} found in old DB`); +// const old_employee_id = await findOneOldEmployee(new_employee); +// console.log(`Employee ${new_employee.id} found in old DB`); - const old_timesheets = await findManyOldTimesheets(old_employee_id); - console.log(`Timesheets for employee ${old_employee_id}/${new_employee.id} found in old DB`); +// const old_timesheets = await findManyOldTimesheets(old_employee_id); +// console.log(`Timesheets for employee ${old_employee_id}/${new_employee.id} found in old DB`); - console.log('Start of Expense creation*****************************************************************'); - for (const old_timesheet of old_timesheets) { - if (!old_timesheet.start_date) continue; - const new_timesheet = new_timesheets.find((ts) => ts.start_date.getTime() === old_timesheet.start_date!.getTime()); - if (!new_timesheet) { - console.warn(`No new timesheet matching legacy timesheet ${old_timesheet.id}`); - continue; - } - const old_expenses = await prisma_legacy.expenses.findMany({ - where: { time_sheet_id: old_timesheet.id }, - select: { - time_sheet_id: true, - date: true, - code: true, - description: true, - value: true, - status: true, +// console.log('Start of Expense creation*****************************************************************'); +// for (const old_timesheet of old_timesheets) { +// if (!old_timesheet.start_date) continue; +// const new_timesheet = new_timesheets.find((ts) => ts.start_date.getTime() === old_timesheet.start_date!.getTime()); +// if (!new_timesheet) { +// console.warn(`No new timesheet matching legacy timesheet ${old_timesheet.id}`); +// continue; +// } +// const old_expenses = await prisma_legacy.expenses.findMany({ +// where: { time_sheet_id: old_timesheet.id }, +// select: { +// time_sheet_id: true, +// date: true, +// code: true, +// description: true, +// value: true, +// status: true, - }, - }); - await createManyNewExpenses(new_timesheet.id, old_expenses); - } +// }, +// }); +// await createManyNewExpenses(new_timesheet.id, old_expenses); +// } - } - await prisma_legacy.$disconnect(); - await prisma.$disconnect(); -} +// } +// await prisma_legacy.$disconnect(); +// await prisma.$disconnect(); +// } -const findOneNewEmployee = async (id: number): Promise => { - const new_employee = await prisma.employees.findUnique({ - where: { id: id }, - select: { - id: true, - company_code: true, - external_payroll_id: true, - }, - }); - if (!new_employee) throw new Error(`New Employee with id ${id} not found`) - return new_employee; -} +// const findOneNewEmployee = async (id: number): Promise => { +// const new_employee = await prisma.employees.findUnique({ +// where: { id: id }, +// select: { +// id: true, +// company_code: true, +// external_payroll_id: true, +// }, +// }); +// if (!new_employee) throw new Error(`New Employee with id ${id} not found`) +// return new_employee; +// } -const findOneOldEmployee = async (new_employee: NewEmployee): Promise => { - const old_employee = await prisma_legacy.employees.findFirst({ - where: { - company: new_employee.company_code, - employee_number: new_employee.external_payroll_id.toString(), - }, - select: { - id: true, - }, - }); - if (!old_employee) throw new Error(`Old Employee not found`); - return old_employee.id; -} +// const findOneOldEmployee = async (new_employee: NewEmployee): Promise => { +// const old_employee = await prisma_legacy.employees.findFirst({ +// where: { +// company: new_employee.company_code, +// employee_number: new_employee.external_payroll_id.toString(), +// }, +// select: { +// id: true, +// }, +// }); +// if (!old_employee) throw new Error(`Old Employee not found`); +// return old_employee.id; +// } -const findManyOldTimesheets = async (old_employee_id: string) => { - const old_timesheets = await prisma_legacy.time_sheets.findMany({ - where: { employee_id: old_employee_id }, - select: { id: true, start_date: true, status: true } - }); - return old_timesheets; -} +// const findManyOldTimesheets = async (old_employee_id: string) => { +// const old_timesheets = await prisma_legacy.time_sheets.findMany({ +// where: { employee_id: old_employee_id }, +// select: { id: true, start_date: true, status: true } +// }); +// return old_timesheets; +// } -const findManyNewTimesheets = async (employee_id: number) => { - const timesheets = await prisma.timesheets.findMany({ - where: { employee_id: employee_id }, - select: { id: true, start_date: true } - }) - return timesheets; -} +// const findManyNewTimesheets = async (employee_id: number) => { +// const timesheets = await prisma.timesheets.findMany({ +// where: { employee_id: employee_id }, +// select: { id: true, start_date: true } +// }) +// return timesheets; +// } -const createManyNewExpenses = async (timesheet_id: number, old_expenses: OldExpense[]) => { - for (const old_expense of old_expenses) { - let mileage: number = 0; - let amount: number = old_expense.value ?? 0; - if (old_expense.code === 'G503') { - mileage = old_expense.value!; - amount = mileage * 0.72; - } - if (mileage < 0 || amount < 0) { - console.warn(`expense of value less than '0' found`) - continue; - } +// const createManyNewExpenses = async (timesheet_id: number, old_expenses: OldExpense[]) => { +// for (const old_expense of old_expenses) { +// let mileage: number = 0; +// let amount: number = old_expense.value ?? 0; +// if (old_expense.code === 'G503') { +// mileage = old_expense.value!; +// amount = mileage * 0.72; +// } +// if (mileage < 0 || amount < 0) { +// console.warn(`expense of value less than '0' found`) +// continue; +// } - if (old_expense.date == null) { - console.warn(`Expense date invalid ${old_expense.date}`); - continue; - } - const date = toDateFromString(old_expense.date); +// if (old_expense.date == null) { +// console.warn(`Expense date invalid ${old_expense.date}`); +// continue; +// } +// const date = toDateFromString(old_expense.date); - if (old_expense.status == null) { - console.warn(`status null for legacy expense ${old_expense}`); - continue; - } +// if (old_expense.status == null) { +// console.warn(`status null for legacy expense ${old_expense}`); +// continue; +// } - if (old_expense.code == null) { - console.warn(`Code null for legacy expense ${old_expense.code}`); - continue; - } - const bank_code_id = await findBankCodeIdUsingOldCode(old_expense.code); +// if (old_expense.code == null) { +// console.warn(`Code null for legacy expense ${old_expense.code}`); +// continue; +// } +// const bank_code_id = await findBankCodeIdUsingOldCode(old_expense.code); - await prisma.expenses.upsert({ - where: { unique_ts_id_date_amount_mileage: { timesheet_id: timesheet_id, date, amount, mileage } }, - update: { - is_approved: old_expense.status, - }, - create: { - date: date, - comment: old_expense.description ?? '', - timesheet_id: timesheet_id, - bank_code_id: bank_code_id, - amount: amount, - mileage: mileage, - } - }); - } -} +// await prisma.expenses.upsert({ +// where: { unique_ts_id_date_amount_mileage: { timesheet_id: timesheet_id, date, amount, mileage } }, +// update: { +// is_approved: old_expense.status, +// }, +// create: { +// date: date, +// comment: old_expense.description ?? '', +// timesheet_id: timesheet_id, +// bank_code_id: bank_code_id, +// amount: amount, +// mileage: mileage, +// } +// }); +// } +// } -const findBankCodeIdUsingOldCode = async (code: string): Promise => { - const bank_code = await prisma.bankCodes.findFirst({ - where: { bank_code: code }, - select: { id: true }, - }); - if (!bank_code) throw new Error(`Bank_code_id not found for Code ${code}`) - return bank_code.id; -} \ No newline at end of file +// const findBankCodeIdUsingOldCode = async (code: string): Promise => { +// const bank_code = await prisma.bankCodes.findFirst({ +// where: { bank_code: code }, +// select: { id: true }, +// }); +// if (!bank_code) throw new Error(`Bank_code_id not found for Code ${code}`) +// return bank_code.id; +// } \ No newline at end of file diff --git a/scripts/migrate-shifts.ts b/scripts/migrate-shifts.ts index 5b966c4..2a9f68e 100644 --- a/scripts/migrate-shifts.ts +++ b/scripts/migrate-shifts.ts @@ -1,210 +1,210 @@ -import { PrismaClient as PrismaNew } from "@prisma/client"; -import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" +// import { PrismaClient as PrismaNew } from "@prisma/client"; +// import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" -const prisma_legacy = new PrismaLegacy({}); -const prisma = new PrismaNew({}); +// const prisma_legacy = new PrismaLegacy({}); +// const prisma = new PrismaNew({}); -type NewEmployee = { - id: number; - company_code: number; - external_payroll_id: number; -} +// type NewEmployee = { +// id: number; +// company_code: number; +// external_payroll_id: number; +// } -type OldShifts = { - time_sheet_id: string | null; - code: string | null; - type: string | null; - date: Date | null; - start_time: bigint | null; - end_time: bigint | null; - comment: string | null; - status: boolean | null; -} +// type OldShifts = { +// time_sheet_id: string | null; +// code: string | null; +// type: string | null; +// date: Date | null; +// start_time: bigint | null; +// end_time: bigint | null; +// comment: string | null; +// status: boolean | null; +// } -export const extractOldShifts = async () => { - for (let id = 1; id <= 61; id++) { - console.log(`Start of shift migration ***************************************************************`); - const new_employee = await findOneNewEmployee(id); - console.log(`Employee ${id} found in new DB`); +// export const extractOldShifts = async () => { +// for (let id = 1; id <= 61; id++) { +// console.log(`Start of shift migration ***************************************************************`); +// const new_employee = await findOneNewEmployee(id); +// console.log(`Employee ${id} found in new DB`); - const new_timesheets = await findManyNewTimesheets(new_employee.id); - console.log(`New Timesheets found for employee ${id}`); - for (const ts of new_timesheets) { - console.log(`start_date = ${ts.start_date} timesheet_id = ${ts.id}`) +// const new_timesheets = await findManyNewTimesheets(new_employee.id); +// console.log(`New Timesheets found for employee ${id}`); +// for (const ts of new_timesheets) { +// console.log(`start_date = ${ts.start_date} timesheet_id = ${ts.id}`) - } - console.log('***************************************************************'); - const old_employee_id = await findOneOldEmployee(new_employee); - console.log(`Employee ${new_employee.id} found in old DB`); +// } +// console.log('***************************************************************'); +// const old_employee_id = await findOneOldEmployee(new_employee); +// console.log(`Employee ${new_employee.id} found in old DB`); - const old_timesheets = await findManyOldTimesheets(old_employee_id); - console.log(`Timesheets for employee ${old_employee_id}/${new_employee.id} found in old DB`); +// const old_timesheets = await findManyOldTimesheets(old_employee_id); +// console.log(`Timesheets for employee ${old_employee_id}/${new_employee.id} found in old DB`); - for (const old_timesheet of old_timesheets) { - if (!old_timesheet.start_date) continue; - const new_timesheet = new_timesheets.find((ts) => ts.start_date.getTime() === old_timesheet.start_date!.getTime()); - if (!new_timesheet) { - console.warn(`No new timesheet ${new_timesheet} matching legacy timesheet ${old_timesheet.id}`); - continue; - } - const old_shifts = await prisma_legacy.shifts.findMany({ - where: { time_sheet_id: old_timesheet.id }, - select: { - time_sheet_id: true, - code: true, - type: true, - date: true, - start_time: true, - end_time: true, - comment: true, - status: true, - }, - }); - await createManyNewShifts(new_timesheet.id, old_shifts); - } - } - await prisma_legacy.$disconnect(); - await prisma.$disconnect(); -} +// for (const old_timesheet of old_timesheets) { +// if (!old_timesheet.start_date) continue; +// const new_timesheet = new_timesheets.find((ts) => ts.start_date.getTime() === old_timesheet.start_date!.getTime()); +// if (!new_timesheet) { +// console.warn(`No new timesheet ${new_timesheet} matching legacy timesheet ${old_timesheet.id}`); +// continue; +// } +// const old_shifts = await prisma_legacy.shifts.findMany({ +// where: { time_sheet_id: old_timesheet.id }, +// select: { +// time_sheet_id: true, +// code: true, +// type: true, +// date: true, +// start_time: true, +// end_time: true, +// comment: true, +// status: true, +// }, +// }); +// await createManyNewShifts(new_timesheet.id, old_shifts); +// } +// } +// await prisma_legacy.$disconnect(); +// await prisma.$disconnect(); +// } -const findOneNewEmployee = async (id: number): Promise => { - const new_employee = await prisma.employees.findUnique({ - where: { id: id }, - select: { - id: true, - company_code: true, - external_payroll_id: true, - }, - }); - if (!new_employee) throw new Error(`New Employee with id ${id} not found`) - return new_employee; -} +// const findOneNewEmployee = async (id: number): Promise => { +// const new_employee = await prisma.employees.findUnique({ +// where: { id: id }, +// select: { +// id: true, +// company_code: true, +// external_payroll_id: true, +// }, +// }); +// if (!new_employee) throw new Error(`New Employee with id ${id} not found`) +// return new_employee; +// } -const findOneOldEmployee = async (new_employee: NewEmployee): Promise => { - const old_employee = await prisma_legacy.employees.findFirst({ - where: { - company: new_employee.company_code, - employee_number: new_employee.external_payroll_id.toString(), - }, - select: { - id: true, - }, - }); - if (!old_employee) throw new Error(`Old Employee not found`); - return old_employee.id; -} +// const findOneOldEmployee = async (new_employee: NewEmployee): Promise => { +// const old_employee = await prisma_legacy.employees.findFirst({ +// where: { +// company: new_employee.company_code, +// employee_number: new_employee.external_payroll_id.toString(), +// }, +// select: { +// id: true, +// }, +// }); +// if (!old_employee) throw new Error(`Old Employee not found`); +// return old_employee.id; +// } -const findManyOldTimesheets = async (old_employee_id: string) => { - const old_timesheets = await prisma_legacy.time_sheets.findMany({ - where: { employee_id: old_employee_id }, - select: { id: true, start_date: true, status: true } - }); - return old_timesheets; -} +// const findManyOldTimesheets = async (old_employee_id: string) => { +// const old_timesheets = await prisma_legacy.time_sheets.findMany({ +// where: { employee_id: old_employee_id }, +// select: { id: true, start_date: true, status: true } +// }); +// return old_timesheets; +// } -const findManyNewTimesheets = async (employee_id: number) => { - const timesheets = await prisma.timesheets.findMany({ - where: { employee_id: employee_id }, - select: { id: true, start_date: true } - }) - return timesheets; -} +// const findManyNewTimesheets = async (employee_id: number) => { +// const timesheets = await prisma.timesheets.findMany({ +// where: { employee_id: employee_id }, +// select: { id: true, start_date: true } +// }) +// return timesheets; +// } -const createManyNewShifts = async (timesheet_id: number, old_shifts: OldShifts[]) => { - for (const old_shift of old_shifts) { - let is_remote = true; +// const createManyNewShifts = async (timesheet_id: number, old_shifts: OldShifts[]) => { +// for (const old_shift of old_shifts) { +// let is_remote = true; - const start = toHHmmfromLegacyTimestamp(old_shift.start_time); - if (old_shift.start_time == null || !start) { - console.warn(`Shift start invalid ${old_shift.start_time}`); - continue; - } +// const start = toHHmmfromLegacyTimestamp(old_shift.start_time); +// if (old_shift.start_time == null || !start) { +// console.warn(`Shift start invalid ${old_shift.start_time}`); +// continue; +// } - const end = toHHmmfromLegacyTimestamp(old_shift.end_time); - if (old_shift.end_time == null || !end) { - console.warn(`Shift end invalid ${old_shift.end_time}`); - continue; - } +// const end = toHHmmfromLegacyTimestamp(old_shift.end_time); +// if (old_shift.end_time == null || !end) { +// console.warn(`Shift end invalid ${old_shift.end_time}`); +// continue; +// } - if (old_shift.date == null) { - console.warn(`Shift date invalid ${old_shift.date}`); - continue; - } +// if (old_shift.date == null) { +// console.warn(`Shift date invalid ${old_shift.date}`); +// continue; +// } - if (old_shift.status == null) { - console.warn(`status null for legacy shift ${old_shift}`); - continue; - } - if (old_shift.type == null) { - console.warn(`type null for legacy shift ${old_shift.type}`); - continue; - } +// if (old_shift.status == null) { +// console.warn(`status null for legacy shift ${old_shift}`); +// continue; +// } +// if (old_shift.type == null) { +// console.warn(`type null for legacy shift ${old_shift.type}`); +// continue; +// } - if (old_shift.type === 'office') { - is_remote = false; - } +// if (old_shift.type === 'office') { +// is_remote = false; +// } - if (old_shift.code == null) { - console.warn(`Code null for legacy shift ${old_shift.code}`); - continue; - } - const bank_code_id = await findBankCodeIdUsingOldCode(old_shift.code); - try { - await prisma.shifts.create({ - // where: { unique_ts_id_date_start_time: { - // timesheet_id, - // date: old_shift.date, - // start_time: toDateFromHHmm(start) }}, - // update: { - // start_time: toDateFromHHmm(start), - // end_time: toDateFromHHmm(end), - // comment: old_shift.comment, - // is_approved: old_shift.status, - // is_remote: is_remote, - // bank_code_id: bank_code_id, - // }, - data: { - date: old_shift.date, - start_time: toDateFromHHmm(start), - end_time: toDateFromHHmm(end), - comment: old_shift.comment, - is_approved: old_shift.status, - is_remote: is_remote, - timesheet_id: timesheet_id, - bank_code_id: bank_code_id, - }, - }); - } catch (error) { - console.log('An error occured during shifts creation'); - } - } -} +// if (old_shift.code == null) { +// console.warn(`Code null for legacy shift ${old_shift.code}`); +// continue; +// } +// const bank_code_id = await findBankCodeIdUsingOldCode(old_shift.code); +// try { +// await prisma.shifts.create({ +// // where: { unique_ts_id_date_start_time: { +// // timesheet_id, +// // date: old_shift.date, +// // start_time: toDateFromHHmm(start) }}, +// // update: { +// // start_time: toDateFromHHmm(start), +// // end_time: toDateFromHHmm(end), +// // comment: old_shift.comment, +// // is_approved: old_shift.status, +// // is_remote: is_remote, +// // bank_code_id: bank_code_id, +// // }, +// data: { +// date: old_shift.date, +// start_time: toDateFromHHmm(start), +// end_time: toDateFromHHmm(end), +// comment: old_shift.comment, +// is_approved: old_shift.status, +// is_remote: is_remote, +// timesheet_id: timesheet_id, +// bank_code_id: bank_code_id, +// }, +// }); +// } catch (error) { +// console.log('An error occured during shifts creation'); +// } +// } +// } -const toHHmmfromLegacyTimestamp = (value: bigint | null): string | null => { - if (value == null) return null; - const date = new Date(Number(value)); - const hh = String(date.getHours()).padStart(2, '0'); - const mm = String(date.getMinutes()).padStart(2, '0'); - return `${hh}:${mm}`; -} +// const toHHmmfromLegacyTimestamp = (value: bigint | null): string | null => { +// if (value == null) return null; +// const date = new Date(Number(value)); +// const hh = String(date.getHours()).padStart(2, '0'); +// const mm = String(date.getMinutes()).padStart(2, '0'); +// return `${hh}:${mm}`; +// } -const toDateFromHHmm = (hhmm: string): Date => { - const [hh, mm] = hhmm.split(':'); - const hours = Number(hh); - const minutes = Number(mm); - return new Date(Date.UTC(1970, 0, 1, hours, minutes, 0, 0)); -} +// const toDateFromHHmm = (hhmm: string): Date => { +// const [hh, mm] = hhmm.split(':'); +// const hours = Number(hh); +// const minutes = Number(mm); +// return new Date(Date.UTC(1970, 0, 1, hours, minutes, 0, 0)); +// } -const findBankCodeIdUsingOldCode = async (code: string): Promise => { - if (code === 'G700') { - code = 'G104'; - } else if (code === 'G140') { - code = 'G56' - } - const bank_code = await prisma.bankCodes.findFirst({ - where: { bank_code: code }, - select: { id: true, bank_code: true }, - }); - if (!bank_code) throw new Error(`Bank_code_id not found for Code ${code}`) - return bank_code.id; -} +// const findBankCodeIdUsingOldCode = async (code: string): Promise => { +// if (code === 'G700') { +// code = 'G104'; +// } else if (code === 'G140') { +// code = 'G56' +// } +// const bank_code = await prisma.bankCodes.findFirst({ +// where: { bank_code: code }, +// select: { id: true, bank_code: true }, +// }); +// if (!bank_code) throw new Error(`Bank_code_id not found for Code ${code}`) +// return bank_code.id; +// } diff --git a/scripts/migrate-timesheets.ts b/scripts/migrate-timesheets.ts index da25839..dd65564 100644 --- a/scripts/migrate-timesheets.ts +++ b/scripts/migrate-timesheets.ts @@ -1,118 +1,118 @@ -import { PrismaClient as Prisma } from "@prisma/client"; -import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" -import { toStringFromDate } from "src/common/utils/date-utils"; +// import { PrismaClient as Prisma } from "@prisma/client"; +// import { PrismaClient as PrismaLegacy } from "@prisma/client-legacy" +// import { toStringFromDate } from "src/common/utils/date-utils"; -type NewEmployee = { - id: number; - company_code: number; - external_payroll_id: number; -} +// type NewEmployee = { +// id: number; +// company_code: number; +// external_payroll_id: number; +// } -type OldTimesheets = { - id: string; - start_date: Date | null; - status: boolean | null; -} +// type OldTimesheets = { +// id: string; +// start_date: Date | null; +// status: boolean | null; +// } -const prisma_legacy = new PrismaLegacy({}); -const prisma_new = new Prisma({}); +// const prisma_legacy = new PrismaLegacy({}); +// const prisma_new = new Prisma({}); -export const extractOldTimesheets = async () => { - for (let id = 1; id <= 61; id++) { - const new_employee = await findOneNewEmployee(id); - console.log(`Employee ${id} found in new DB ${new_employee.external_payroll_id}`); +// export const extractOldTimesheets = async () => { +// for (let id = 1; id <= 61; id++) { +// const new_employee = await findOneNewEmployee(id); +// console.log(`Employee ${id} found in new DB ${new_employee.external_payroll_id}`); - const old_employee_id = await findOneOldEmployee(new_employee); - console.log(`Employee ${new_employee.id} found in old DB`); +// const old_employee_id = await findOneOldEmployee(new_employee); +// console.log(`Employee ${new_employee.id} found in old DB`); - const old_timesheets = await findManyOldTimesheets(old_employee_id); - console.log(` ${old_timesheets.length} Timesheets for employee ${old_employee_id}/${new_employee.id} found in old DB`); +// const old_timesheets = await findManyOldTimesheets(old_employee_id); +// console.log(` ${old_timesheets.length} Timesheets for employee ${old_employee_id}/${new_employee.id} found in old DB`); - await createManyNewTimesheets(old_timesheets, new_employee); - console.log(`${old_timesheets.length} New Timesheets created in new DB for employee ${new_employee.id}`); - } - await prisma_legacy.$disconnect(); - await prisma_new.$disconnect(); -} +// await createManyNewTimesheets(old_timesheets, new_employee); +// console.log(`${old_timesheets.length} New Timesheets created in new DB for employee ${new_employee.id}`); +// } +// await prisma_legacy.$disconnect(); +// await prisma_new.$disconnect(); +// } -const findOneNewEmployee = async (id: number): Promise => { - const new_employee = await prisma_new.employees.findUnique({ - where: { id: id }, - select: { - id: true, - company_code: true, - external_payroll_id: true, - }, - }); - if (!new_employee) throw new Error(`New Employee with id ${id} not found`) - return new_employee; -} +// const findOneNewEmployee = async (id: number): Promise => { +// const new_employee = await prisma_new.employees.findUnique({ +// where: { id: id }, +// select: { +// id: true, +// company_code: true, +// external_payroll_id: true, +// }, +// }); +// if (!new_employee) throw new Error(`New Employee with id ${id} not found`) +// return new_employee; +// } -const findOneOldEmployee = async (new_employee: NewEmployee): Promise => { - const employee_number = new_employee.external_payroll_id.toString() - const old_employee = await prisma_legacy.employees.findFirst({ - where: { - company: new_employee.company_code, - employee_number: employee_number, - }, - select: { - id: true, - }, - }); - if (!old_employee) throw new Error(`Old Employee not found`); - return old_employee.id; -} +// const findOneOldEmployee = async (new_employee: NewEmployee): Promise => { +// const employee_number = new_employee.external_payroll_id.toString() +// const old_employee = await prisma_legacy.employees.findFirst({ +// where: { +// company: new_employee.company_code, +// employee_number: employee_number, +// }, +// select: { +// id: true, +// }, +// }); +// if (!old_employee) throw new Error(`Old Employee not found`); +// return old_employee.id; +// } -const findManyOldTimesheets = async (old_employee_id: string) => { - const old_timesheets = await prisma_legacy.time_sheets.findMany({ - where: { employee_id: old_employee_id }, - select: { id: true, start_date: true, status: true } - }); - if (!old_timesheets) throw new Error(`old Timesheets not found for employee_id ${old_employee_id}`) - return old_timesheets; -} +// const findManyOldTimesheets = async (old_employee_id: string) => { +// const old_timesheets = await prisma_legacy.time_sheets.findMany({ +// where: { employee_id: old_employee_id }, +// select: { id: true, start_date: true, status: true } +// }); +// if (!old_timesheets) throw new Error(`old Timesheets not found for employee_id ${old_employee_id}`) +// return old_timesheets; +// } -const createManyNewTimesheets = async (old_timesheets: OldTimesheets[], new_employee: NewEmployee) => { - for (const timesheet of old_timesheets) { - if (timesheet.start_date == null) { - console.warn(`start_date invalid for legacy timesheet ${timesheet.id}`); - continue; - } - if (timesheet.status == null) { - console.warn(`status null for legacy timesheet ${timesheet.id}`); - continue; - } +// const createManyNewTimesheets = async (old_timesheets: OldTimesheets[], new_employee: NewEmployee) => { +// for (const timesheet of old_timesheets) { +// if (timesheet.start_date == null) { +// console.warn(`start_date invalid for legacy timesheet ${timesheet.id}`); +// continue; +// } +// if (timesheet.status == null) { +// console.warn(`status null for legacy timesheet ${timesheet.id}`); +// continue; +// } - try { - const new_timesheet = await prisma_new.timesheets.upsert({ - where: { employee_id_start_date: { employee_id: new_employee.id, start_date: timesheet.start_date } }, - update: { - is_approved: timesheet.status, - }, - create: { - employee_id: new_employee.id, - start_date: timesheet.start_date, - is_approved: timesheet.status, - }, - }); - if (!new_timesheet) throw new Error( - `Timesheet with start_date: ${toStringFromDate(timesheet.start_date!)} for employee ${new_employee.id} not created` - ); - } catch (error) { - throw new Error('An error occured during timesheets creation'); - } - } -} +// try { +// const new_timesheet = await prisma_new.timesheets.upsert({ +// where: { employee_id_start_date: { employee_id: new_employee.id, start_date: timesheet.start_date } }, +// update: { +// is_approved: timesheet.status, +// }, +// create: { +// employee_id: new_employee.id, +// start_date: timesheet.start_date, +// is_approved: timesheet.status, +// }, +// }); +// if (!new_timesheet) throw new Error( +// `Timesheet with start_date: ${toStringFromDate(timesheet.start_date!)} for employee ${new_employee.id} not created` +// ); +// } catch (error) { +// throw new Error('An error occured during timesheets creation'); +// } +// } +// } -extractOldTimesheets() - .then(() => { - console.log("Migration completed"); - }) - .catch((error) => { - console.error("Migration failed:", error); - }) - .finally(async () => { - await prisma_legacy.$disconnect(); - await prisma_new.$disconnect(); - }); \ No newline at end of file +// extractOldTimesheets() +// .then(() => { +// console.log("Migration completed"); +// }) +// .catch((error) => { +// console.error("Migration failed:", error); +// }) +// .finally(async () => { +// await prisma_legacy.$disconnect(); +// await prisma_new.$disconnect(); +// }); \ No newline at end of file diff --git a/scripts/migration.service.ts b/scripts/migration.service.ts index 2bb37d6..3a9b3ba 100644 --- a/scripts/migration.service.ts +++ b/scripts/migration.service.ts @@ -1,21 +1,21 @@ -// import { extractOldTimesheets } from "scripts/migrate-timesheets"; -// import { extractOldExpenses } from "scripts/migrate-expenses"; -// import { extractOldShifts } from "scripts/migrate-shifts"; -import { Injectable } from "@nestjs/common"; +// // import { extractOldTimesheets } from "scripts/migrate-timesheets"; +// // import { extractOldExpenses } from "scripts/migrate-expenses"; +// // import { extractOldShifts } from "scripts/migrate-shifts"; +// import { Injectable } from "@nestjs/common"; -@Injectable() -export class MigrationService { - constructor() {} +// @Injectable() +// export class MigrationService { +// constructor() {} - async migrateTimesheets() { - // extractOldTimesheets(); - }; +// async migrateTimesheets() { +// // extractOldTimesheets(); +// }; - async migrateShifts() { - // extractOldShifts(); - } +// async migrateShifts() { +// // extractOldShifts(); +// } - async migrateExpenses() { - // extractOldExpenses(); - } -} \ No newline at end of file +// async migrateExpenses() { +// // extractOldExpenses(); +// } +// } \ No newline at end of file