84 lines
No EOL
2.3 KiB
JavaScript
84 lines
No EOL
2.3 KiB
JavaScript
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(); |