@mlagie/sql-connector 1.1.2-beta → 1.1.4-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/models/Model.js +34 -10
- package/src/utils/reservedKeywords.js +0 -24
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mlagie/sql-connector",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4-beta",
|
|
4
4
|
"description": "Le module sql-connector permet de gérer les connexions à une base de données MySQL, de définir des schémas de tables, et d'interagir avec les données de manière simple et efficace.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
package/src/models/Model.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const { logs, error, sql } = require("@mlagie/logger");
|
|
2
2
|
const { sqlTypeMap } = require("../utils/sqlTypeMap");
|
|
3
|
+
const { getConnexion } = require("../db/connexion");
|
|
3
4
|
|
|
4
5
|
function getFieldType(field) {
|
|
5
6
|
if (typeof field === "object") {
|
|
@@ -21,6 +22,29 @@ function generateValueSQL(value) {
|
|
|
21
22
|
}).join(", ");
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
const reservedKeywords = ['ADD', 'ALL', 'ALTER', 'AND', 'AS', 'ASC', 'BETWEEN', 'BY', 'CASE', 'CHECK', 'COLUMN', 'CONSTRAINT', 'CREATE', 'CURRENT_DATE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'DEFAULT', 'DELETE', 'DESC', 'DISTINCT', 'DROP', 'ELSE', 'END', 'ESCAPE', 'EXCEPT', 'EXISTS', 'FOR', 'FOREIGN', 'FROM', 'FULL', 'GROUP', 'HAVING', 'IN', 'INNER', 'INSERT', 'INTERSECT', 'INTO', 'IS', 'JOIN', 'LEFT', 'LIKE', 'LIMIT', 'NOT', 'NULL', 'ON', 'OR', 'ORDER', 'OUTER', 'PRIMARY', 'REFERENCES', 'RIGHT', 'SELECT', 'SET', 'SOME', 'TABLE', 'THEN', 'UNION', 'UNIQUE', 'UPDATE', 'VALUES', 'WHEN', 'WHERE'];
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Checks if a table name is a reserved keyword.
|
|
29
|
+
*
|
|
30
|
+
* @param {string} tableName Le nom de la table à vérifier.
|
|
31
|
+
* @returns {boolean} `true` si le nom de la table est un mot-clé réservé, sinon `false`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* const isReserved = ifReservedKeywords('SELECT');
|
|
35
|
+
* console.log(isReserved); // true
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const isReserved = ifReservedKeywords('myTable');
|
|
39
|
+
* console.log(isReserved); // false
|
|
40
|
+
*/
|
|
41
|
+
function ifReservedKeywords(tableName) {
|
|
42
|
+
if (reservedKeywords.includes(tableName.toUpperCase())) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
|
|
24
48
|
/**
|
|
25
49
|
* Represents a database model.
|
|
26
50
|
* @class
|
|
@@ -82,7 +106,7 @@ class Model {
|
|
|
82
106
|
for (const table of sorted) {
|
|
83
107
|
const model = modelMap[table];
|
|
84
108
|
await new Promise((resolve, reject) => {
|
|
85
|
-
|
|
109
|
+
getConnexion().query(model.generateCreateTableStatement(model.schema.schemaDict), (err) => {
|
|
86
110
|
if (err) {
|
|
87
111
|
error(`Error creating table: ${err} with table name: ${model.name}`);
|
|
88
112
|
return reject(err);
|
|
@@ -161,7 +185,7 @@ class Model {
|
|
|
161
185
|
const sql_request = `INSERT INTO ${this.name} (${keys.join(', ')}) VALUES (${generateValueSQL(Object.values(data))})`;
|
|
162
186
|
sql(this.name, sql_request);
|
|
163
187
|
try {
|
|
164
|
-
const result = await
|
|
188
|
+
const result = await getConnexion().promise().query(sql_request);
|
|
165
189
|
return result;
|
|
166
190
|
} catch (err) {
|
|
167
191
|
error(`Error inserting data into ${this.name}: ${err}`);
|
|
@@ -199,7 +223,7 @@ class Model {
|
|
|
199
223
|
}
|
|
200
224
|
|
|
201
225
|
return new Promise((resolve, reject) => {
|
|
202
|
-
|
|
226
|
+
getConnexion().promise().query(sql_request).then(([rows]) => {
|
|
203
227
|
resolve(rows);
|
|
204
228
|
}).catch((err) => {
|
|
205
229
|
error(`Error executing findAll: ${err}`);
|
|
@@ -218,7 +242,7 @@ class Model {
|
|
|
218
242
|
const sql_request = `SELECT ${fields.join(", ")} FROM ${this.name} WHERE ${generateCondition(formatObject(filter))}`;
|
|
219
243
|
|
|
220
244
|
return new Promise((resolve, reject) => {
|
|
221
|
-
|
|
245
|
+
getConnexion().promise().query(sql_request).then((rows) => {
|
|
222
246
|
if (rows.length == 0) return resolve(0);
|
|
223
247
|
|
|
224
248
|
resolve(new ModelInstance(this.name, Object.values(rows[0])[0], this.schema));
|
|
@@ -255,7 +279,7 @@ class Model {
|
|
|
255
279
|
const sql_request = `SELECT ${fields.join(", ")} FROM ${this.name} WHERE ${generateCondition(formatObject(filter))}`;
|
|
256
280
|
|
|
257
281
|
return new Promise((resolve, reject) => {
|
|
258
|
-
|
|
282
|
+
getConnexion().promise().query(sql_request).then((rows) => {
|
|
259
283
|
if (rows.length == 0) return resolve(0);
|
|
260
284
|
|
|
261
285
|
resolve(new ModelInstance(this.name, Object.values(rows[0]), this.schema));
|
|
@@ -283,7 +307,7 @@ class Model {
|
|
|
283
307
|
*/
|
|
284
308
|
async customRequest(custom) {
|
|
285
309
|
return new Promise(async (resolve, reject) => {
|
|
286
|
-
await
|
|
310
|
+
await getConnexion().promise().query(custom).then((rows) => {
|
|
287
311
|
if (rows.length == 0) return resolve(0);
|
|
288
312
|
|
|
289
313
|
resolve(new ModelInstance(this.name, Object.values(rows[0]), this.schema));
|
|
@@ -308,7 +332,7 @@ class Model {
|
|
|
308
332
|
const sql_request = `DELETE FROM ${this.name} WHERE ${generateCondition(formatObject(filter))}`;
|
|
309
333
|
|
|
310
334
|
return new Promise((resolve, reject) => {
|
|
311
|
-
|
|
335
|
+
getConnexion().promise().query(sql_request).then((rows) => {
|
|
312
336
|
if (rows[1] != undefined) return resolve(0);
|
|
313
337
|
|
|
314
338
|
return resolve(1);
|
|
@@ -333,7 +357,7 @@ class Model {
|
|
|
333
357
|
const sql_request = `DROP TABLE IF EXISTS ${this.name};`;
|
|
334
358
|
|
|
335
359
|
return new Promise((resolve, reject) => {
|
|
336
|
-
|
|
360
|
+
getConnexion().promise().query(sql_request).then((rows) => {
|
|
337
361
|
console.log(rows);
|
|
338
362
|
}).catch((err) => {
|
|
339
363
|
error(`Error executing query: ${err}`);
|
|
@@ -362,11 +386,11 @@ class Model {
|
|
|
362
386
|
* @throws {Error} If there is an error executing the SQL_request query.
|
|
363
387
|
*/
|
|
364
388
|
async generate_uuid(var_uuid = "uuid") {
|
|
365
|
-
const uuid = (await
|
|
389
|
+
const uuid = (await getConnexion().promise().query("SELECT UUID();"))[0][0]["UUID()"];
|
|
366
390
|
const sql_request = `SELECT COUNT(*) FROM ${this.name} WHERE ${var_uuid}="${uuid}";`;
|
|
367
391
|
|
|
368
392
|
return new Promise((resolve, reject) => {
|
|
369
|
-
|
|
393
|
+
getConnexion().promise().query(sql_request).then((rows) => {
|
|
370
394
|
if (rows[0][0]['COUNT(*)'] == 0) return resolve(uuid);
|
|
371
395
|
resolve(null);
|
|
372
396
|
}).catch((err) => {
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
const reservedKeywords = ['ADD', 'ALL', 'ALTER', 'AND', 'AS', 'ASC', 'BETWEEN', 'BY', 'CASE', 'CHECK', 'COLUMN', 'CONSTRAINT', 'CREATE', 'CURRENT_DATE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'DEFAULT', 'DELETE', 'DESC', 'DISTINCT', 'DROP', 'ELSE', 'END', 'ESCAPE', 'EXCEPT', 'EXISTS', 'FOR', 'FOREIGN', 'FROM', 'FULL', 'GROUP', 'HAVING', 'IN', 'INNER', 'INSERT', 'INTERSECT', 'INTO', 'IS', 'JOIN', 'LEFT', 'LIKE', 'LIMIT', 'NOT', 'NULL', 'ON', 'OR', 'ORDER', 'OUTER', 'PRIMARY', 'REFERENCES', 'RIGHT', 'SELECT', 'SET', 'SOME', 'TABLE', 'THEN', 'UNION', 'UNIQUE', 'UPDATE', 'VALUES', 'WHEN', 'WHERE'];
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Checks if a table name is a reserved keyword.
|
|
5
|
-
*
|
|
6
|
-
* @param {string} tableName Le nom de la table à vérifier.
|
|
7
|
-
* @returns {boolean} `true` si le nom de la table est un mot-clé réservé, sinon `false`.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* const isReserved = ifReservedKeywords('SELECT');
|
|
11
|
-
* console.log(isReserved); // true
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* const isReserved = ifReservedKeywords('myTable');
|
|
15
|
-
* console.log(isReserved); // false
|
|
16
|
-
*/
|
|
17
|
-
function ifReservedKeywords(tableName) {
|
|
18
|
-
if (reservedKeywords.includes(tableName.toUpperCase())) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
module.exports = { ifReservedKeywords }
|