/** * This will monitor alpla purchase */ import { eq } from "drizzle-orm"; import { db } from "../db/db.controller.js"; import { settings } from "../db/schema/settings.schema.js"; import { createLogger } from "../logger/logger.controller.js"; import { prodQuery } from "../prodSql/prodSqlQuery.controller.js"; import { type SqlQuery, sqlQuerySelector, } from "../prodSql/prodSqlQuerySelector.utils.js"; import { createCronJob } from "../utils/croner.utils.js"; import { delay } from "../utils/delay.utils.js"; import { returnFunc } from "../utils/returnHelper.utils.js"; const log = createLogger({ module: "purchase", subModule: "purchaseMonitor" }); export const monitorAlplaPurchase = async () => { const purchaseMonitor = await db .select() .from(settings) .where(eq(settings.name, "purchaseMonitor")); const sqlQuery = sqlQuerySelector(`alplapurchase`) as SqlQuery; if (!sqlQuery.success) { return returnFunc({ success: false, level: "error", module: "purchase", subModule: "query", message: `Error getting alpla purchase info`, data: [sqlQuery.message], notify: false, }); } if (purchaseMonitor[0]?.active) { createCronJob("opendock_sync", "* */5 * * * *", async () => { try { const result = await prodQuery( sqlQuery.query.replace( "[interval]", `'${purchaseMonitor[0]?.value || "5"}'`, ), "Get release info", ); if (result.data.length) { await delay(500); } } catch (e) { console.error( { error: e }, "Error occurred while running the monitor job", ); log.error({ error: e }, "Error occurred while running the monitor job"); } }); } };