@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mlagie/sql-connector",
3
- "version": "1.1.2-beta",
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": {
@@ -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
- connexion.query(model.generateCreateTableStatement(model.schema.schemaDict), (err) => {
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 connexion.promise().query(sql_request);
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
- connexion.promise().query(sql_request).then(([rows]) => {
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
- connexion.promise().query(sql_request).then((rows) => {
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
- connexion.promise().query(sql_request).then((rows) => {
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 connexion.promise().query(custom).then((rows) => {
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
- connexion.promise().query(sql_request).then((rows) => {
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
- connexion.promise().query(sql_request).then((rows) => {
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 connexion.promise().query("SELECT UUID();"))[0][0]["UUID()"];
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
- connexion.promise().query(sql_request).then((rows) => {
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 }