const { pool } = require("../modules/database") const { DefaultError } = require("../errors/errors") async function createBadge(name, description, icon, condition) { try { const sql = "INSERT INTO `badges` (name, description, icon, condition) VALUES (?, ?, ?, ?)" const rows = await pool.query(sql, [name, description, icon, condition]) return rows.insertId } catch (error) { throw new DefaultError(500, "Internal Server Error", error) } } async function findAllBadges() { try { const sql = "SELECT * FROM `badges` ORDER BY name" const rows = await pool.query(sql) return rows } catch (error) { throw new DefaultError(500, "Internal Server Error", error) } } async function findBadgeById(badgeId) { try { const sql = "SELECT * FROM `badges` WHERE id = ?" const rows = await pool.query(sql, [badgeId]) return rows[0] || null } catch (error) { throw new DefaultError(500, "Internal Server Error", error) } } async function updateBadge(badgeId, updateData) { try { const fields = Object.keys(updateData) const values = Object.values(updateData) const setClause = fields.map(f => `${f} = ?`).join(", ") const sql = `UPDATE \`badges\` SET ${setClause} WHERE id = ?` const rows = await pool.query(sql, [...values, badgeId]) return rows.affectedRows > 0 } catch (error) { throw new DefaultError(500, "Internal Server Error", error) } } async function deleteBadge(badgeId) { try { const sql = "DELETE FROM `badges` WHERE id = ?" const rows = await pool.query(sql, [badgeId]) return rows.affectedRows > 0 } catch (error) { throw new DefaultError(500, "Internal Server Error", error) } } module.exports = { createBadge, findAllBadges, findBadgeById, updateBadge, deleteBadge }