(add): Backup/Restore
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import { db } from '$lib/server/db';
|
||||
import { baskets, prefixes, tickets } from '$lib/server/db/schema';
|
||||
import { json } from '@sveltejs/kit';
|
||||
import { sql } from 'drizzle-orm';
|
||||
|
||||
const chunk_size = 300;
|
||||
|
||||
export const GET = async () => {
|
||||
const data = {};
|
||||
data.prefixes = await db.select().from(prefixes);
|
||||
data.baskets = await db.select().from(baskets);
|
||||
data.tickets = await db.select().from(tickets);
|
||||
return json(data);
|
||||
};
|
||||
|
||||
export const POST = async ({ request }) => {
|
||||
const reqData = await request.json();
|
||||
for (let i = 0; i < reqData.prefixes.length; i += chunk_size) {
|
||||
const chunk = reqData.prefixes.slice(i, i + chunk_size);
|
||||
await db
|
||||
.insert(prefixes)
|
||||
.values(chunk)
|
||||
.onConflictDoUpdate({
|
||||
target: prefixes.prefix,
|
||||
set: { color: sql`EXCLUDED.color`, weight: sql`EXCLUDED.weight` }
|
||||
});
|
||||
}
|
||||
for (let i = 0; i < reqData.baskets.length; i += chunk_size) {
|
||||
const chunk = reqData.baskets.slice(i, i + chunk_size);
|
||||
await db
|
||||
.insert(baskets)
|
||||
.values(chunk)
|
||||
.onConflictDoUpdate({
|
||||
target: [baskets.prefix, baskets.b_id],
|
||||
set: {
|
||||
description: sql`EXCLUDED.description`,
|
||||
donors: sql`EXCLUDED.donors`,
|
||||
winning_ticket: sql`EXCLUDED.winning_ticket`
|
||||
}
|
||||
});
|
||||
}
|
||||
for (let i = 0; i < reqData.tickets.length; i += chunk_size) {
|
||||
const chunk = reqData.tickets.slice(i, i + chunk_size);
|
||||
await db
|
||||
.insert(tickets)
|
||||
.values(chunk)
|
||||
.onConflictDoNothing({
|
||||
target: [tickets.prefix, tickets.t_id],
|
||||
set: {
|
||||
first_name: sql`EXCLUDED.first_name`,
|
||||
last_name: sql`EXCLUDED.last_name`,
|
||||
phone_number: sql`EXCLUDED.phone_number`,
|
||||
pref: sql`EXCLUDED.pref`
|
||||
}
|
||||
});
|
||||
}
|
||||
return json({ details: 'Data loaded successfully.' });
|
||||
};
|
||||
Reference in New Issue
Block a user