From b0537b797c92ac23a334ba626c3133e2ea843474 Mon Sep 17 00:00:00 2001 From: Stephan <57194608+stephan418@users.noreply.github.com> Date: Tue, 3 May 2022 15:38:37 +0200 Subject: [PATCH] Add functionality to load a backup --- prisma/backup.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/prisma/backup.ts b/prisma/backup.ts index 28400f8..ebe2b6e 100644 --- a/prisma/backup.ts +++ b/prisma/backup.ts @@ -72,3 +72,30 @@ export const writeFullBackup = async (path: string) => { logger.info("Backup finished!"); }; + +export async function pushPrismaBackup(data: ModelSelect) { + const prisma = new PrismaClient(); + + logger.info("Starting push..."); + + for (const [k, v] of Object.entries(data)) { + const deleteBatch = await (prisma as any)[k].deleteMany(); + + logger.info(`Purged ${deleteBatch.count} records from '${k}'`); + + logger.info(`Pushing ${v.length} records to '${k}'`); + + await (prisma as any)[k].createMany({ data: v }); + } +} + +export async function loadPrismaBackup(path: string) { + logger.info(`Reading backup from file '${path}'`); + let data: any = await fs.readFile(path, "utf-8"); + + data = JSON.parse(data); + + await pushPrismaBackup(data); + + logger.info("Backup loaded successfully!"); +}