Fix SMS import tableExists to use selected database name.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-06 15:39:59 +03:30
co-authored by Cursor
parent 12513e4967
commit 2d21813c7b
+7 -11
View File
@@ -92,17 +92,13 @@ function mapLedgerType(raw: string): SmsLedgerType {
return 'debit'; return 'debit';
} }
async function tableExists(conn: mysql.Connection, table: string) { async function tableExists(conn: mysql.Connection, database: string, table: string) {
const db =
env('SMS_IMPORT_DB_DATABASE') ||
env('HAMKAR_DB_DATABASE') ||
env('KHANEGI_DB_DATABASE');
const [rows] = await conn.query( const [rows] = await conn.query(
`SELECT 1 AS ok `SELECT 1 AS ok
FROM information_schema.tables FROM information_schema.tables
WHERE table_schema = ? AND table_name = ? WHERE table_schema = ? AND table_name = ?
LIMIT 1`, LIMIT 1`,
[db, table], [database, table],
); );
return Array.isArray(rows) && rows.length > 0; return Array.isArray(rows) && rows.length > 0;
} }
@@ -231,13 +227,13 @@ async function main() {
}); });
try { 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.'); console.log('SKIP: sms_wallets table missing — billing not installed on this version.');
return; return;
} }
let smsPanel = ''; let smsPanel = '';
if (await tableExists(conn, 'settings')) { if (await tableExists(conn, database, 'settings')) {
const [panelRows] = await conn.query( const [panelRows] = await conn.query(
`SELECT \`value\` AS v FROM settings WHERE \`key\` = 'sms_panel' LIMIT 1`, `SELECT \`value\` AS v FROM settings WHERE \`key\` = 'sms_panel' LIMIT 1`,
); );
@@ -264,7 +260,7 @@ async function main() {
const wallet = walletRows[0]; const wallet = walletRows[0];
const keys = chargeKeys(product); const keys = chargeKeys(product);
const settings = new Map<string, string>(); const settings = new Map<string, string>();
if (await tableExists(conn, 'settings')) { if (await tableExists(conn, database, 'settings')) {
const [settingRowsRaw] = await conn.query( const [settingRowsRaw] = await conn.query(
`SELECT \`key\`, \`value\` FROM settings WHERE \`key\` IN (?, ?, ?, ?)`, `SELECT \`key\`, \`value\` FROM settings WHERE \`key\` IN (?, ?, ?, ?)`,
[keys.card, keys.iban, keys.holder, keys.instruction], [keys.card, keys.iban, keys.holder, keys.instruction],
@@ -290,7 +286,7 @@ async function main() {
let sendLogs: SendLogRow[] = []; let sendLogs: SendLogRow[] = [];
if (withHistory) { if (withHistory) {
if (await tableExists(conn, 'sms_ledger')) { if (await tableExists(conn, database, 'sms_ledger')) {
const [rows] = await conn.query( const [rows] = await conn.query(
`SELECT type, amount, balance_after, price_per_part, parts, note, created_by, created_at `SELECT type, amount, balance_after, price_per_part, parts, note, created_by, created_at
FROM sms_ledger FROM sms_ledger
@@ -298,7 +294,7 @@ async function main() {
); );
ledgers = rows as LedgerRow[]; ledgers = rows as LedgerRow[];
} }
if (await tableExists(conn, 'sms_send_logs')) { if (await tableExists(conn, database, 'sms_send_logs')) {
const [rows] = await conn.query( const [rows] = await conn.query(
`SELECT receiver, body, parts, price_per_part, total_amount, provider, source, is_alert, created_at `SELECT receiver, body, parts, price_per_part, total_amount, provider, source, is_alert, created_at
FROM sms_send_logs FROM sms_send_logs