(change): localdb performance improvement
This commit is contained in:
@@ -10,7 +10,7 @@ services:
|
||||
MARIADB_USER: tam3
|
||||
MARIADB_PASSWORD: tam3
|
||||
volumes:
|
||||
- "tam3-db:/var/lib/mysql"
|
||||
- "tam3-db:/var/lib/mysql:rw,z"
|
||||
ports:
|
||||
- 127.0.0.1:3306:3306
|
||||
adminer:
|
||||
|
||||
7
webapp/src/lib/server/chunkArray.js
Normal file
7
webapp/src/lib/server/chunkArray.js
Normal file
@@ -0,0 +1,7 @@
|
||||
export function chunkArray(arr, chunkSize) {
|
||||
const chunks = [];
|
||||
for (let i = 0; i < arr.length; i += chunkSize) {
|
||||
chunks.push(arr.slice(i, i + chunkSize));
|
||||
}
|
||||
return chunks;
|
||||
}
|
||||
@@ -2,14 +2,7 @@ import { env } from "$env/dynamic/private";
|
||||
import { db } from "$lib/server/db";
|
||||
import { prefixes, tickets, baskets } from "$lib/server/db/schema";
|
||||
import { sql } from "drizzle-orm";
|
||||
|
||||
function chunkArray(arr, chunkSize) {
|
||||
const chunks = [];
|
||||
for (let i = 0; i < arr.length; i += chunkSize) {
|
||||
chunks.push(arr.slice(i, i + chunkSize));
|
||||
}
|
||||
return chunks;
|
||||
}
|
||||
import { chunkArray } from "$lib/server/chunkArray";
|
||||
|
||||
export async function GET() {
|
||||
if (env.TAM3_REMOTE) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { env } from "$env/dynamic/private";
|
||||
import { db } from "$lib/server/db";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { baskets } from "$lib/server/db/schema";
|
||||
import { chunkArray } from "$lib/server/chunkArray";
|
||||
|
||||
export async function GET() {
|
||||
if (env.TAM3_REMOTE) {
|
||||
@@ -26,9 +28,9 @@ export async function GET() {
|
||||
|
||||
export async function POST({ request }) {
|
||||
const i_baskets = await request.json();
|
||||
for (let basket of i_baskets) {
|
||||
await db.insert(baskets).values({prefix: basket.prefix, b_id: basket.b_id, description: basket.description, donors: basket.donors, winning_ticket: basket.winning_ticket})
|
||||
.onConflictDoUpdate({target: [baskets.prefix, baskets.b_id], set: {description: basket.description, donors: basket.donors, winning_ticket: basket.winning_ticket}})
|
||||
for (let basketChunk of chunkArray(i_baskets, 300)) {
|
||||
await db.insert(baskets).values(basketChunk)
|
||||
.onConflictDoUpdate({target: [baskets.prefix, baskets.b_id], set: {description: sql`excluded.description`, donors: sql`excluded.donors`, winning_ticket: sql`excluded.winning_ticket`}})
|
||||
};
|
||||
if (env.TAM3_REMOTE) {
|
||||
const res = await fetch(`${env.TAM3_REMOTE}/api/baskets/?api_key=${env.TAM3_REMOTE_KEY}`, {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { env } from "$env/dynamic/private";
|
||||
import { db } from "$lib/server/db";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { baskets, combined } from "$lib/server/db/schema";
|
||||
import { chunkArray } from "$lib/server/chunkArray";
|
||||
|
||||
export async function GET() {
|
||||
if (env.TAM3_REMOTE) {
|
||||
@@ -21,9 +23,9 @@ export async function GET() {
|
||||
|
||||
export async function POST({ request }) {
|
||||
const r_data = await request.json()
|
||||
for (let winner of r_data) {
|
||||
await db.insert(baskets).values({prefix: winner.prefix, b_id: winner.b_id, winning_ticket: winner.winning_ticket})
|
||||
.onConflictDoUpdate({target: [baskets.prefix, baskets.b_id], set: {winning_ticket: winner.winning_ticket}})
|
||||
for (let winnerChunk of chunkArray(r_data, 300)) {
|
||||
await db.insert(baskets).values(winnerChunk)
|
||||
.onConflictDoUpdate({target: [baskets.prefix, baskets.b_id], set: {winning_ticket: sql`excluded.winning_ticket`}})
|
||||
}
|
||||
if (env.TAM3_REMOTE) {
|
||||
const res = await fetch(`${env.TAM3_REMOTE}/api/combined/?api_key=${env.TAM3_REMOTE_KEY}`, {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { db } from "$lib/server/db";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { tickets } from "$lib/server/db/schema";
|
||||
import { env } from "$env/dynamic/private";
|
||||
import { chunkArray } from "$lib/server/chunkArray";
|
||||
|
||||
export async function GET() {
|
||||
if (env.TAM3_REMOTE) {
|
||||
@@ -30,9 +32,9 @@ export async function GET() {
|
||||
|
||||
export async function POST({ request }) {
|
||||
const i_tickets = await request.json();
|
||||
for (let ticket of i_tickets) {
|
||||
await db.insert(tickets).values({prefix: ticket.prefix, t_id: ticket.t_id, first_name: ticket.first_name, last_name: ticket.last_name, phone_number: ticket.phone_number, preference: ticket.preference})
|
||||
.onConflictDoUpdate({target: [tickets.prefix, tickets.t_id], set: {first_name: ticket.first_name, last_name: ticket.last_name, phone_number: ticket.phone_number, preference: ticket.preference}});
|
||||
for (let ticketChunk of chunkArray(i_tickets, 300)) {
|
||||
await db.insert(tickets).values(ticketChunk)
|
||||
.onConflictDoUpdate({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`, preference: sql`excluded.preference`}});
|
||||
};
|
||||
if (env.TAM3_REMOTE) {
|
||||
const res = await fetch(`${env.TAM3_REMOTE}/api/tickets/?api_key=${env.TAM3_REMOTE_KEY}`, {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
const functions = {
|
||||
refreshPage: async () => {
|
||||
if (current_baskets.length > 0) {
|
||||
if (current_baskets.filter(basket => basket.changed === true).length > 0) {
|
||||
functions.saveAll()
|
||||
}
|
||||
const res = await fetch(`/api/baskets/${prefix.name}/${pagerForm.id_from}/${pagerForm.id_to}`);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
const functions = {
|
||||
refreshPage: async () => {
|
||||
if (current_drawings.length > 0) {
|
||||
if (current_drawings.filter(drawing => drawing.changed === true).length > 0) {
|
||||
functions.saveAll()
|
||||
}
|
||||
const res = await fetch(`/api/combined/${prefix.name}/${pagerForm.id_from}/${pagerForm.id_to}`);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
const functions = {
|
||||
refreshPage: async () => {
|
||||
if (current_tickets.length > 0) {
|
||||
if (current_tickets.filter(ticket => ticket.changed === true).length > 0) {
|
||||
functions.saveAll();
|
||||
};
|
||||
const res = await fetch(`/api/tickets/${prefix.name}/${pagerForm.id_from}/${pagerForm.id_to}`);
|
||||
|
||||
Reference in New Issue
Block a user