import Database from 'better-sqlite3'; // Initialisation (crée le fichier s'il n'existe pas) export const db = new Database('./db.sqlite'); const settingsDefaultValues = { quoiAnswerPercentage: 100, quoicoubehAnswerPercentage: 100, feurAnswerPercentage: 100, mentionAnswerPercentage: 100, forcedAnswerRoleId: null, ignoredRoleId: null, }; function initDb() { // .exec pour les scripts sans paramètres db.exec(` CREATE TABLE IF NOT EXISTS IgnoredChannels ( channelId VARCHAR PRIMARY KEY, guildId VARCHAR ); `); db.exec(` CREATE TABLE IF NOT EXISTS Config ( guildId VARCHAR PRIMARY KEY, quoiAnswerPercentage INTEGER NOT NULL DEFAULT ${settingsDefaultValues.quoiAnswerPercentage}, quoicoubehAnswerPercentage INTEGER NOT NULL DEFAULT ${settingsDefaultValues.quoicoubehAnswerPercentage}, feurAnswerPercentage INTEGER NOT NULL DEFAULT ${settingsDefaultValues.feurAnswerPercentage}, mentionAnswerPercentage INTEGER NOT NULL DEFAULT ${settingsDefaultValues.mentionAnswerPercentage}, forcedAnswerRoleId VARCHAR, ignoredRoleId VARCHAR ); `); } export function addChannelToIgnoreList(channelId, guildId) { return db.prepare(` INSERT INTO IgnoredChannels (channelId, guildId) VALUES (?, ?) ON CONFLICT(channelId) DO NOTHING `).run(channelId, guildId); } export function getIgnoredChannels(guildId) { return db.prepare(` SELECT channelId FROM IgnoredChannels WHERE guildId = ? `).all(guildId); } export function removeChannelFromIgnoreList(channelId) { return db.prepare(` DELETE FROM IgnoredChannels WHERE channelId = ? `).run(channelId); } export function setSetting(guildId, setting, value) { // ${setting} est injecté directement (nom de colonne) return db.prepare(` INSERT INTO Config (guildId, ${setting}) VALUES (?, ?) ON CONFLICT(guildId) DO UPDATE SET ${setting} = ? `).run(guildId, value, value); } export function getSetting(guildId, setting) { // .pluck() permet de récupérer directement la valeur au lieu d'un objet { colonne: valeur } const result = db.prepare(` SELECT ${setting} FROM Config WHERE guildId = ? `).pluck().get(guildId); if (result === undefined) { return settingsDefaultValues[setting]; } return result; } initDb();