mirror of
https://github.com/detleph/server.git
synced 2026-09-04 00:26:03 +02:00
Add functionality to load a backup
This commit is contained in:
@@ -72,3 +72,30 @@ export const writeFullBackup = async (path: string) => {
|
|||||||
|
|
||||||
logger.info("Backup finished!");
|
logger.info("Backup finished!");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function pushPrismaBackup(data: ModelSelect<any[]>) {
|
||||||
|
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!");
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user