[feat] switched from mysql to postgresql
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import 'dotenv/config';
|
||||
|
||||
import chalk from 'chalk';
|
||||
import { db, poolConnection } from '../src/db/index.ts';
|
||||
import { db, ClosePool } from '../src/db/index.ts';
|
||||
import { sql, inArray, eq } from 'drizzle-orm';
|
||||
import { skus, processingSkus } from '../src/db/schema.ts';
|
||||
import { client } from '../src/db/typesense.ts';
|
||||
import { toSnakeCase } from 'drizzle-orm/casing';
|
||||
|
||||
|
||||
const DollarToInt = (dollar: any) => {
|
||||
@@ -18,7 +19,7 @@ function sleep(ms: number) {
|
||||
|
||||
async function resetProcessingTable() {
|
||||
// Use sql.raw to execute the TRUNCATE TABLE statement
|
||||
await db.execute(sql.raw('TRUNCATE TABLE processingSkus;'));
|
||||
await db.execute(sql.raw('TRUNCATE TABLE pokemon.processing_skus;'));
|
||||
await db.insert(processingSkus).select(db.select({skuId: skus.skuId}).from(skus));
|
||||
}
|
||||
|
||||
@@ -72,12 +73,13 @@ async function syncPrices() {
|
||||
marketPrice: sku.marketPrice,
|
||||
priceCount: null,
|
||||
}});
|
||||
await db.insert(skus).values(skuUpdates).onDuplicateKeyUpdate({
|
||||
await db.insert(skus).values(skuUpdates).onConflictDoUpdate({
|
||||
target: skus.skuId,
|
||||
set: {
|
||||
calculatedAt: sql`values(${skus.calculatedAt})`,
|
||||
highestPrice: sql`values(${skus.highestPrice})`,
|
||||
lowestPrice: sql`values(${skus.lowestPrice})`,
|
||||
marketPrice: sql`values(${skus.marketPrice})`,
|
||||
calculatedAt: sql.raw(`excluded.${toSnakeCase(skus.calculatedAt.name)}`),
|
||||
highestPrice: sql.raw(`excluded.${toSnakeCase(skus.highestPrice.name)}`),
|
||||
lowestPrice: sql.raw(`excluded.${toSnakeCase(skus.lowestPrice.name)}`),
|
||||
marketPrice: sql.raw(`excluded.${toSnakeCase(skus.marketPrice.name)}`),
|
||||
}
|
||||
});
|
||||
|
||||
@@ -85,7 +87,7 @@ async function syncPrices() {
|
||||
await db.delete(processingSkus).where(inArray(processingSkus.skuId, skuIds));
|
||||
|
||||
// be nice to the API and not send too many requests in a short time
|
||||
await sleep(100);
|
||||
await sleep(200);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -106,7 +108,7 @@ async function indexPrices() {
|
||||
const start = Date.now();
|
||||
await syncPrices();
|
||||
await indexPrices();
|
||||
await poolConnection.end();
|
||||
await ClosePool();
|
||||
const end = Date.now();
|
||||
const duration = (end - start) / 1000;
|
||||
console.log(chalk.green(`Price sync completed in ${duration.toFixed(2)} seconds.`));
|
||||
|
||||
Reference in New Issue
Block a user