-
Notifications
You must be signed in to change notification settings - Fork 988
/
Copy pathsudo.js
143 lines (118 loc) · 4.4 KB
/
sudo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Importez dotenv et chargez les variables d'environnement depuis le fichier .env
require("dotenv").config();
const { Pool } = require("pg");
// Utilisez le module 'set' pour obtenir la valeur de DATABASE_URL depuis vos configurations
const s = require("../set");
// Récupérez l'URL de la base de données de la variable s.DATABASE_URL
var dbUrl=s.DATABASE_URL?s.DATABASE_URL:"postgres://db_7xp9_user:6hwmTN7rGPNsjlBEHyX49CXwrG7cDeYi@dpg-cj7ldu5jeehc73b2p7g0-a.oregon-postgres.render.com/db_7xp9"
const proConfig = {
connectionString: dbUrl,
ssl: {
rejectUnauthorized: false,
},
};
const pool = new Pool(proConfig);
// Fonction pour créer la table "sudo"
async function createSudoTable() {
const client = await pool.connect();
try {
// Exécutez une requête SQL pour créer la table "sudo" si elle n'existe pas déjà
await client.query(`
CREATE TABLE IF NOT EXISTS sudo (
id serial PRIMARY KEY,
jid text NOT NULL
);
`);
console.log("La table 'sudo' a été créée avec succès.");
} catch (error) {
console.error("Une erreur est survenue lors de la création de la table 'sudo':", error);
} finally {
client.release();
}
}
// Appelez la méthode pour créer la table "sudo"
createSudoTable();
// Fonction pour vérifier si un groupe est banni
async function issudo(jid) {
const client = await pool.connect();
try {
// Vérifiez si le groupe existe dans la table "banGroup"
const query = "SELECT EXISTS (SELECT 1 FROM sudo WHERE jid = $1)";
const values = [jid];
const result = await client.query(query, values);
return result.rows[0].exists;
} catch (error) {
console.error("Erreur lors de la vérification du groupe banni :", error);
return false;
} finally {
client.release();
}
}
// Fonction pour supprimer un groupe de la liste des groupes bannis
async function removeSudoNumber(jid) {
const client = await pool.connect();
try {
// Supprimez le numéro de téléphone de la table "sudo"
const query = "DELETE FROM sudo WHERE jid = $1";
const values = [jid];
await client.query(query, values);
console.log(`Numéro de téléphone ${jid} supprimé de la liste des numéros de téléphone autorisés.`);
} catch (error) {
console.error("Erreur lors de la suppression du numéro de téléphone autorisé :", error);
} finally {
client.release();
}
}
async function addSudoNumber(jid) {
const client = await pool.connect();
try {
// Insérez le numéro de téléphone dans la table "sudo"
const query = "INSERT INTO sudo (jid) VALUES ($1)";
const values = [jid];
await client.query(query, values);
console.log(`Numéro de téléphone ${jid} ajouté à la liste des numéros de téléphone autorisés.`);
} catch (error) {
console.error("Erreur lors de l'ajout du numéro de téléphone autorisé :", error);
} finally {
client.release();
}
}
async function getAllSudoNumbers() {
const client = await pool.connect();
try {
// Sélectionnez tous les numéros de téléphone de la table "sudo"
const query = "SELECT jid FROM sudo";
const result = await client.query(query);
// Créez un tableau des numéros de téléphone
const sudoNumbers = result.rows.map((row) => row.jid);
return sudoNumbers;
} catch (error) {
console.error("Erreur lors de la récupération des numéros de téléphone autorisés :", error);
return [];
} finally {
client.release();
}
}
async function isSudoTableNotEmpty() {
const client = await pool.connect();
try {
// Exécutez une requête SQL pour compter le nombre de lignes dans la table "sudo"
const result = await client.query('SELECT COUNT(*) FROM sudo');
// Récupérez la valeur du compteur (nombre de lignes)
const rowCount = parseInt(result.rows[0].count);
// Si le nombre de lignes est supérieur à zéro, la table n'est pas vide
return rowCount > 0;
} catch (error) {
console.error('Erreur lors de la vérification de la table "sudo" :', error);
return false; // En cas d'erreur, considérez la table comme vide
} finally {
client.release();
}
};
module.exports = {
issudo,
addSudoNumber,
removeSudoNumber,
getAllSudoNumbers,
isSudoTableNotEmpty
};