const { query } = require('../../utils/db') const COLS = 'id, guild_id, bot_token_enc, application_id, enabled, status, status_detail, last_connected_at, updated_by, created_at, updated_at' // Singleton row (id = 1). Returns null until the admin saves it for the first time. async function get() { const rows = await query(`SELECT ${COLS} FROM bot_config WHERE id = 1 LIMIT 1`) return rows[0] || null } // Upsert the singleton row. `fields` are column values already prepared by the // model (token pre-encrypted). Only the provided columns are written/updated. async function upsert(fields) { const cols = Object.keys(fields) const vals = cols.map((c) => fields[c]) const insertCols = ['id', ...cols].map((c) => `\`${c}\``).join(', ') const placeholders = ['1', ...cols.map(() => '?')].join(', ') const updates = cols.map((c) => `\`${c}\` = VALUES(\`${c}\`)`).join(', ') await query( `INSERT INTO bot_config (${insertCols}) VALUES (${placeholders}) ON DUPLICATE KEY UPDATE ${updates}`, vals, ) return get() } module.exports = { get, upsert }