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!");
|
||||
};
|
||||
|
||||
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