From 2d21813c7bd7f476fe03fdf8fa2cc52359c092bd Mon Sep 17 00:00:00 2001 From: Mahdi Date: Thu, 6 Aug 2026 15:39:59 +0330 Subject: [PATCH] Fix SMS import tableExists to use selected database name. Co-authored-by: Cursor --- prisma/import-sms-from-product.ts | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/prisma/import-sms-from-product.ts b/prisma/import-sms-from-product.ts index ea4e6ce..a512b79 100644 --- a/prisma/import-sms-from-product.ts +++ b/prisma/import-sms-from-product.ts @@ -92,17 +92,13 @@ function mapLedgerType(raw: string): SmsLedgerType { return 'debit'; } -async function tableExists(conn: mysql.Connection, table: string) { - const db = - env('SMS_IMPORT_DB_DATABASE') || - env('HAMKAR_DB_DATABASE') || - env('KHANEGI_DB_DATABASE'); +async function tableExists(conn: mysql.Connection, database: string, table: string) { const [rows] = await conn.query( `SELECT 1 AS ok FROM information_schema.tables WHERE table_schema = ? AND table_name = ? LIMIT 1`, - [db, table], + [database, table], ); return Array.isArray(rows) && rows.length > 0; } @@ -231,13 +227,13 @@ async function main() { }); try { - if (!(await tableExists(conn, 'sms_wallets'))) { + if (!(await tableExists(conn, database, 'sms_wallets'))) { console.log('SKIP: sms_wallets table missing — billing not installed on this version.'); return; } let smsPanel = ''; - if (await tableExists(conn, 'settings')) { + if (await tableExists(conn, database, 'settings')) { const [panelRows] = await conn.query( `SELECT \`value\` AS v FROM settings WHERE \`key\` = 'sms_panel' LIMIT 1`, ); @@ -264,7 +260,7 @@ async function main() { const wallet = walletRows[0]; const keys = chargeKeys(product); const settings = new Map(); - if (await tableExists(conn, 'settings')) { + if (await tableExists(conn, database, 'settings')) { const [settingRowsRaw] = await conn.query( `SELECT \`key\`, \`value\` FROM settings WHERE \`key\` IN (?, ?, ?, ?)`, [keys.card, keys.iban, keys.holder, keys.instruction], @@ -290,7 +286,7 @@ async function main() { let sendLogs: SendLogRow[] = []; if (withHistory) { - if (await tableExists(conn, 'sms_ledger')) { + if (await tableExists(conn, database, 'sms_ledger')) { const [rows] = await conn.query( `SELECT type, amount, balance_after, price_per_part, parts, note, created_by, created_at FROM sms_ledger @@ -298,7 +294,7 @@ async function main() { ); ledgers = rows as LedgerRow[]; } - if (await tableExists(conn, 'sms_send_logs')) { + if (await tableExists(conn, database, 'sms_send_logs')) { const [rows] = await conn.query( `SELECT receiver, body, parts, price_per_part, total_amount, provider, source, is_alert, created_at FROM sms_send_logs