minervajs-helmet 1.0.8 → 1.0.9

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/README.md CHANGED
@@ -1,30 +1,64 @@
1
- # MinervaJS.Helmet
1
+ # MinervaJS-Helmet
2
2
  Modulo para la gestion de las conección a la base de datos, permite conectarse a varios tipos utilizando sobrecarga de metodos, tolera MySQL y Oracle Client
3
3
 
4
- Ejemplo: Partiendo de un proyecto en blanco recien creado
5
- > npm i minervajs-helmet
6
-
7
- Archivo: index.js
8
-
9
- var db = require('minervajs-helmet');
10
-
11
- var l_sql = " SELECT P.id, " +
12
-            " P.titulo, " +
13
-            " P.subtitulo, " +
14
-            " DATE_FORMAT(P.publicado, '%M %d, %Y') as publicado, " +
15
-            " P.autor, " +
16
-            " P.introduccion, " +
17
-            " P.tags, " +
18
-            " P.url_imagen " +
19
-      " FROM publicacion P " +
20
-      " ORDER BY P.publicado DESC " +
21
-      " LIMIT 10 ";
22
-
23
- db.executeSQL(l_sql, function(a_data, err)
24
- {
25
-       if (err)
26
-       {console.log(err);}
27
-       else
28
-       {console.log(a_data);}
29
- });
4
+ Ejemplo: Partiendo de un proyecto en blanco recien creado
5
+ `$ npm i minervajs-helmet `
6
+
7
+ ####Archivo: ./config/settings.js
8
+ Adicionas una Entrada, por cada tipo y base de datos
9
+ ```javascript
10
+ {
11
+ 'my_mysql': // 'Perfil de Conexion'
12
+ {
13
+ type: 'mysql',
14
+ host: 'sql3.freesqldatabase.com', // 'localhost',
15
+ port: 3306, // 'puerto',
16
+ user: 'sql3772729', // 'usuario',
17
+ password: 'esUA3qpGKD', // 'contraseña',
18
+ database: 'sql3772729' // 'nombre_db'
19
+ }
20
+ }
21
+ ```
22
+
23
+ ####Archivo: index.js
24
+
25
+ ```javascript
26
+ var db = require('minervajs-helmet');
27
+ var config = require('./config/settings.js');
28
+
29
+ async function main() {
30
+ try {
31
+ // Conexión a MySQL
32
+ const mysqlConnection = await db.connect('my_mysql', config);
33
+ const mysqlResult = await db.query('my_mysql', ' SELECT * FROM test ;', [], config); // Ejemplo con parámetros
34
+ console.log('Resultados de MySQL:', mysqlResult);
35
+ await db.close('my_mysql', config);
36
+ } catch (error) {
37
+ console.error('Error:', error);
38
+ }
39
+ }
40
+
41
+ main();
42
+ ```
43
+
44
+ ####Salida de resultados
45
+ ```javascript
46
+ Resultados de MySQL: [
47
+ {
48
+ id: 1,
49
+ codigo: 'SV',
50
+ descripcion: 'El Salvador',
51
+ fecha: 2025-04-02T06:00:00.000Z
52
+ },
53
+ {
54
+ id: 2,
55
+ codigo: 'EU',
56
+ descripcion: 'Estados Unidos',
57
+ fecha: 2025-04-02T06:00:00.000Z
58
+ }
59
+ ]
60
+ ```
61
+
62
+ En la instalacion, puedes hacer uso del archivo muestra que esta en *\node_modules\minervajs-helmet\config\settings.js*
63
+
30
64
 
@@ -15,7 +15,7 @@ module.exports = {
15
15
  * 'mi_postgres':
16
16
  * {
17
17
  * type: 'postgres',
18
- * host: 'localhost',
18
+ * host: 'localhost o IP',
19
19
  * port: 5432,
20
20
  * user: 'usuario',
21
21
  * password: 'contraseña',
@@ -25,20 +25,29 @@ module.exports = {
25
25
  'my_mysql':
26
26
  {
27
27
  type: 'mysql',
28
- host: 'sql3.freesqldatabase.com' // 'localhost',
29
- port: 3306, //
30
- user: 'sql3772729' // 'usuario',
31
- password: 'esUA3qpGKD' // 'contraseña',
28
+ host: 'sql3.freesqldatabase.com', // 'localhost',
29
+ port: 3306, // 'puerto',
30
+ user: 'sql3772729', // 'usuario',
31
+ password: 'esUA3qpGKD', // 'contraseña',
32
32
  database: 'sql3772729' // 'nombre_db'
33
33
  },
34
- 'my_oracle': {
35
- type: 'oracle',
36
- host: 'localhost o IP'
37
- port: 5432,
38
- user: 'usuario',
39
- password: 'contraseña',
40
- database: 'nombre_db',
41
- connectString : '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=namehostoip)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=servicename)))'
42
- },
43
-
34
+ /* 'my_oracle': {
35
+ * type: 'oracle',
36
+ * user: 'usuario',
37
+ * password: 'contraseña',
38
+ * connectString : '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=namehostoip)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=servicename)))'
39
+ * },
40
+ * 'mi_mongodb': {
41
+ * type: 'mongodb',
42
+ * url: 'mongodb://localhost:27017/nombre_db'
43
+ * },
44
+ * 'mi_mariadb': {
45
+ * type: 'mariadb',
46
+ * host: 'localhost',
47
+ * port: 3306,
48
+ * user: 'mi_usuario',
49
+ * password: 'mi_contraseña',
50
+ * database: 'nombre_db'
51
+ * }
52
+ */
44
53
  };
package/js/OLD db.js CHANGED
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @module
3
- * @name db
4
- * @description Modulo gestor de la coneccion a la base de datos
5
- *
3
+ * @name db_mysql
4
+ * @description Modulo gestor de la coneccion a la base de datos, MySQL, utiliza el cliente mysql2
6
5
  */
7
6
 
8
7
  var mysql = require('mysql');
@@ -74,4 +73,4 @@ exports.executeSQLarray = function (sql, array, callback)
74
73
  con.end();
75
74
  });
76
75
  });
77
- }
76
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @module lib/mariadb
3
+ * @description Módulo para la conexión y operaciones de MariaDB.
4
+ */
5
+
6
+ /**
7
+ * @constant
8
+ * @type {string}
9
+ * @default
10
+ */
11
+ const mariadb = require('mariadb/promise');
12
+
13
+ /**
14
+ * Establece una conexión a la base de datos MariaDB.
15
+ *
16
+ * @async
17
+ * @function connect
18
+ * @param {object} config - Configuración de la conexión.
19
+ * @returns {Promise<mariadb.Connection>} Objeto de conexión de MariaDB.
20
+ */
21
+ async function connect(config) {
22
+ try {
23
+ const connection = await mariadb.createConnection(config);
24
+ return connection;
25
+ } catch (error) {
26
+ console.error('Error al conectar a MariaDB:', error);
27
+ throw error;
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Ejecuta una consulta SQL en la base de datos MariaDB.
33
+ *
34
+ * @async
35
+ * @function query
36
+ * @param {mariadb.Connection} connection - Objeto de conexión de MariaDB.
37
+ * @param {string} sql - Consulta SQL.
38
+ * @param {Array} [values] - Parámetros para la consulta.
39
+ * @returns {Promise<Array>} Filas resultantes de la consulta.
40
+ */
41
+ async function query(connection, sql, values = []) {
42
+ try {
43
+ const rows = await connection.query(sql, values);
44
+ return rows;
45
+ } catch (error) {
46
+ console.error('Error al ejecutar la consulta MariaDB:', error);
47
+ throw error;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Cierra la conexión a la base de datos MariaDB.
53
+ *
54
+ * @async
55
+ * @function close
56
+ * @param {mariadb.Connection} connection - Objeto de conexión de MariaDB.
57
+ * @returns {Promise<void>}
58
+ */
59
+ async function close(connection) {
60
+ try {
61
+ await connection.end();
62
+ } catch (error) {
63
+ console.error('Error al cerrar la conexión MariaDB:', error);
64
+ throw error;
65
+ }
66
+ }
67
+
68
+ module.exports = { connect, query, close };
69
+
@@ -0,0 +1,49 @@
1
+ const { MongoClient } = require('mongodb');
2
+
3
+ /**
4
+ * @module lib/mongodb
5
+ * @description Módulo para la conexión y operaciones de MongoDB. Comando: npm install mongodb
6
+ */
7
+
8
+ /**
9
+ * Establece una conexión a la base de datos MongoDB.
10
+ *
11
+ * @async
12
+ * @function connect
13
+ * @param {object} config - Configuración de la conexión.
14
+ * @returns {Promise<MongoClient>} Objeto de cliente de MongoDB.
15
+ */
16
+ async function connect(config) {
17
+ try {
18
+ const client = new MongoClient(config.url);
19
+ await client.connect();
20
+ return client;
21
+ } catch (error) {
22
+ console.error('Error al conectar a MongoDB:', error);
23
+ throw error;
24
+ }
25
+ }
26
+
27
+
28
+ // query
29
+ // logica
30
+
31
+
32
+ /**
33
+ * Cierra la conexión a la base de datos MongoDB.
34
+ *
35
+ * @async
36
+ * @function close
37
+ * @param {MongoClient} client - Objeto de cliente de MongoDB.
38
+ * @returns {Promise<void>}
39
+ */
40
+ async function close(client) {
41
+ try {
42
+ await client.close();
43
+ } catch (error) {
44
+ console.error('Error al cerrar la conexión MongoDB:', error);
45
+ throw error;
46
+ }
47
+ }
48
+
49
+ module.exports = { connect, close };
package/js/db_mysql.js CHANGED
@@ -1,67 +1,24 @@
1
1
  /**
2
- * @module
3
- * @name db_mysql
4
- * @description Modulo gestor de la coneccion a la base de datos, MySQL, utiliza el cliente mysql2
5
- *
6
- *
7
- var mysql = require('mysql2');
8
- var settings = require('../js/settings');
9
-
10
-
11
- exports.executeSQL = function (sql, callback)
12
- {
13
- var con = new mysql.createConnection(settings.dbConfig);
14
-
15
- con.connect(function(err)
16
- {
17
- if (err)
18
- {
19
- callback(null, err);
20
- //throw err;
21
- }
22
- if (settings.servConfig.debug){console.log("Connected!");}
23
- con.query(sql, function (err, result) {
24
- if (err)
25
- {
26
- callback(null, err);
27
- //throw err;
28
- }
29
- if (settings.servConfig.debug){console.log("Sentencia Ejecutada:"+sql);}
30
- callback(result);
31
-
32
- con.end();
33
- });
34
- });
35
- };
36
-
37
- exports.executeSQLarray = function (sql, array, callback)
38
- {
39
- var con = new mysql.createConnection(settings.dbConfig);
40
-
41
- con.connect(function(err)
42
- {
43
- if (err)
44
- {
45
- callback(null, err);
46
- //throw err;
47
- }
48
- if (settings.servConfig.debug){console.log("Connected!");}
49
- con.query(sql, array, function (err, result) {
50
- if (err)
51
- {
52
- callback(null, err);
53
- //throw err;
54
- }
55
- if (settings.servConfig.debug){console.log("Sentencia Ejecutada:"+sql);}
56
- callback(result);
57
-
58
- con.end();
59
- });
60
- });
61
- }
62
- */
2
+ * @module js/mysql
3
+ * @name Provider DB js/mysql
4
+ * @description Módulo para la conexión y operaciones del Proveedor MySQL.
5
+ */
6
+
7
+ /**
8
+ * @constant
9
+ * @type {string}
10
+ * @default
11
+ */
63
12
  const mysql = require('mysql2/promise'); // Usamos mysql2/promise para async/await
64
13
 
14
+ /**
15
+ * Establece una conexión a la base de datos MySQL.
16
+ *
17
+ * @async
18
+ * @function connect
19
+ * @param {object} config - Configuración de la conexión.
20
+ * @returns {Promise<mysql.Connection>} Objeto de conexión de MySQL.
21
+ */
65
22
  async function connect(config) {
66
23
  try {
67
24
  const connection = await mysql.createConnection({
@@ -78,6 +35,16 @@ async function connect(config) {
78
35
  }
79
36
  }
80
37
 
38
+ /**
39
+ * Ejecuta una consulta SQL en la base de datos MySQL.
40
+ *
41
+ * @async
42
+ * @function query
43
+ * @param {mysql.Connection} connection - Objeto de conexión de MySQL.
44
+ * @param {string} sql - Consulta SQL.
45
+ * @param {Array} [values] - Parámetros para la consulta.
46
+ * @returns {Promise<Array>} Filas resultantes de la consulta.
47
+ */
81
48
  async function query(connection, sql, values = []) {
82
49
  try {
83
50
  const [rows, fields] = await connection.execute(sql, values);
@@ -88,6 +55,14 @@ async function query(connection, sql, values = []) {
88
55
  }
89
56
  }
90
57
 
58
+ /**
59
+ * Cierra la conexión a la base de datos MySQL.
60
+ *
61
+ * @async
62
+ * @function close
63
+ * @param {mysql.Connection} connection - Objeto de conexión de MySQL.
64
+ * @returns {Promise<void>}
65
+ */
91
66
  async function close(connection) {
92
67
  try {
93
68
  await connection.end();
@@ -97,4 +72,4 @@ async function close(connection) {
97
72
  }
98
73
  }
99
74
 
100
- module.exports = { connect, query, close };
75
+ module.exports = { connect, query, close };
package/js/db_oracle.js CHANGED
@@ -1,5 +1,25 @@
1
+ /**
2
+ * @module js/oracle
3
+ * @name Provider DB js/oracle
4
+ * @description Módulo para la conexión y operaciones de Oracle.
5
+ */
6
+
7
+ /**
8
+ * @constant
9
+ * @type {string}
10
+ * @default
11
+ */
1
12
  const oracledb = require('oracledb');
2
13
 
14
+
15
+ /**
16
+ * Establece una conexión a la base de datos Oracle.
17
+ *
18
+ * @async
19
+ * @function connect
20
+ * @param {object} config - Configuración de la conexión.
21
+ * @returns {Promise<oracledb.Connection>} Objeto de conexión de Oracle.
22
+ */
3
23
  async function connect(config) {
4
24
  try {
5
25
  oracledb.outFormat = oracledb.OUT_FORMAT_OBJECT; // Para obtener resultados como objetos
@@ -16,6 +36,16 @@ async function connect(config) {
16
36
  }
17
37
  }
18
38
 
39
+ /**
40
+ * Ejecuta una consulta SQL en la base de datos Oracle.
41
+ *
42
+ * @async
43
+ * @function query
44
+ * @param {oracledb.Connection} connection - Objeto de conexión de Oracle.
45
+ * @param {string} sql - Consulta SQL.
46
+ * @param {Array} [binds] - Parámetros para la consulta (bind variables).
47
+ * @returns {Promise<Array>} Filas resultantes de la consulta.
48
+ */
19
49
  async function query(connection, sql, binds = []) {
20
50
  try {
21
51
  const result = await connection.execute(sql, binds);
@@ -26,6 +56,14 @@ async function query(connection, sql, binds = []) {
26
56
  }
27
57
  }
28
58
 
59
+ /**
60
+ * Cierra la conexión a la base de datos Oracle.
61
+ *
62
+ * @async
63
+ * @function close
64
+ * @param {oracledb.Connection} connection - Objeto de conexión de Oracle.
65
+ * @returns {Promise<void>}
66
+ */
29
67
  async function close(connection) {
30
68
  try {
31
69
  await connection.close();
package/js/db_postgres.js CHANGED
@@ -1,5 +1,25 @@
1
+ /**
2
+ * @module js/postgres
3
+ * @name Provider DB js/postgres
4
+ * @description Módulo para la conexión y operaciones del Proveedor PostgreSQL.
5
+ */
6
+
7
+ /**
8
+ * @constant
9
+ * @type {string}
10
+ * @default
11
+ */
1
12
  const { Client } = require('pg');
2
13
 
14
+ /**
15
+ * Establece una conexión a la base de datos PostgreSQL.
16
+ *
17
+ * @async
18
+ * @function connect
19
+ * @name connect
20
+ * @param {object} config - Configuración de la conexión.
21
+ * @returns {Promise<Client>} Objeto de cliente de PostgreSQL.
22
+ */
3
23
  async function connect(config)
4
24
  {
5
25
  const client = new Client(config);
@@ -7,12 +27,31 @@ async function connect(config)
7
27
  return client;
8
28
  }
9
29
 
30
+ /**
31
+ * Ejecuta una consulta SQL en la base de datos PostgreSQL.
32
+ *
33
+ * @async
34
+ * @function query
35
+ * @name query
36
+ * @param {Client} client - Objeto de cliente de PostgreSQL.
37
+ * @param {string} sql - Consulta SQL.
38
+ * @returns {Promise<Array>} Filas resultantes de la consulta.
39
+ */
10
40
  async function query(client, sql)
11
41
  {
12
42
  const result = await client.query(sql);
13
43
  return result.rows;
14
44
  }
15
45
 
46
+ /**
47
+ * Cierra la conexión a la base de datos PostgreSQL.
48
+ *
49
+ * @async
50
+ * @function close
51
+ * @name close
52
+ * @param {Client} client - Objeto de cliente de PostgreSQL.
53
+ * @returns {Promise<void>}
54
+ */
16
55
  async function close(client)
17
56
  {
18
57
  await client.end();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "minervajs-helmet",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "main": "src/db.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
package/src/db.js CHANGED
@@ -1,25 +1,31 @@
1
1
  /**
2
2
  *
3
3
  * @name MinervaJS-Helmet
4
- * @description Modulo gestor de la coneccion a la base de datos
4
+ * @module MinervaJS-Helmet
5
+ * @description Modulo gestor de la coneccion a la base de datos, con capacidad de realizar consultas en múltiples bases de datos.
5
6
  *
6
7
  */
8
+
7
9
  const postgres = require('../js/db_postgres');
8
10
  const mysql = require('../js/db_mysql');
9
11
  const oracle = require('../js/db_oracle');
10
- const config = require('../config/settings');
12
+ // const mongodb = require('./lib/mongodb');
13
+ // const mariadb = require('./lib/mariadb');
11
14
 
12
15
  const connections = {};
13
16
 
14
-
15
17
  /**
16
- * @function
18
+ * Establece una conexión a la base de datos especificada.
19
+ *
20
+ * @async
21
+ * @function connect
17
22
  * @name connect
18
- * @param {string} databaseName - Perfil de la base de datos
19
- * @returns {result} result/err - Devuelve un objeto con del tipo conexión
20
- * @description Toma la configuracion y realiza la coneccion a la base de datos
23
+ * @param {string} databaseName - Perfil de la base de datos (clave de configuración)
24
+ * @returns {Promise<object>} Objeto de conexión.
25
+ * @throws {Error} Si la configuración no se encuentra o el tipo de base de datos no es soportado.
26
+ * @description Toma la configuracion y Establece una conexión a la base de datos especificada
21
27
  */
22
- async function connect(databaseName)
28
+ async function connect(databaseName, config)
23
29
  {
24
30
  const dbConfig = config[databaseName];
25
31
  if (!dbConfig) {
@@ -39,9 +45,15 @@ async function connect(databaseName)
39
45
  case 'mysql':
40
46
  connections[databaseName] = await mysql.connect(dbConfig);
41
47
  break;
48
+ // case 'mariadb':
49
+ // connections[databaseName] = await mariadb.connect(dbConfig);
50
+ // break;
42
51
  case 'oracle':
43
52
  connections[databaseName] = await oracle.connect(dbConfig);
44
53
  break;
54
+ // case 'mongodb':
55
+ // connections[databaseName] = await mongodb.connect(dbConfig);
56
+ // break;
45
57
  default:
46
58
  throw new Error(`Tipo de base de datos '${dbConfig.type}' no soportado.`);
47
59
  }
@@ -50,14 +62,19 @@ async function connect(databaseName)
50
62
  }
51
63
 
52
64
  /**
53
- * @function
65
+ * Ejecuta una consulta en la base de datos especificada.
66
+ *
67
+ * @async
68
+ * @function query
54
69
  * @name query
55
- * @param {string} databaseName - Perfil de la base de datos
56
- * @param {string} sql - Sentencia SQL a ejecutar
57
- * @returns {result} result/err - Devuelve un objeto con el set de datos o un objeto err con la respuesta del error
58
- * @description Ejecuta una sentencia SQL y devuelve un objeto en un set de datos
70
+ * @param {string} databaseName - Perfil de la base de datos (clave de configuración)
71
+ * @param {string} sql - Consulta SQL, Sentencia SQL a ejecutar
72
+ * @param {Array} [binds] - Parámetros para la consulta (bind variables).
73
+ * @returns {Promise<Array>} Filas resultantes de la consulta.
74
+ * @throws {Error} Si el tipo de base de datos no es soportado para la operación 'query'.
75
+ * @description Ejecuta una sentencia SQL en la base de datos especificada y devuelve un objeto en un set de datos
59
76
  */
60
- async function query(databaseName, sql)
77
+ async function query(databaseName, sql, config)
61
78
  {
62
79
  const connection = await connect(databaseName);
63
80
  const dbConfig = config[databaseName];
@@ -68,21 +85,31 @@ async function query(databaseName, sql)
68
85
  return postgres.query(connection, sql);
69
86
  case 'mysql':
70
87
  return mysql.query(connection, sql);
88
+ // case 'mariadb': // agregamos el caso MariaDB
89
+ // return mariadb.query(connection, sql, binds);
90
+ // break;
71
91
  case 'oracle':
72
92
  return oracle.query(connection, sql);
93
+ // case 'mongodb':
94
+ // // Adaptar la consulta SQL a la sintaxis de MongoDB
95
+ // console.warn("La función 'query' no es directamente aplicable a MongoDB con sintaxis SQL.");
96
+ // return null; // O lanzar un error
73
97
  default:
74
98
  throw new Error(`Tipo de base de datos '${dbConfig.type}' no soportado para la operación 'query'.`);
75
99
  }
76
100
  }
77
101
 
78
102
  /**
79
- * @function
103
+ * Cierra la conexión a la base de datos especificada.
104
+ *
105
+ * @async
106
+ * @function close
80
107
  * @name close
81
- * @param {string} databaseName - Perfil de la base de datos
82
- * @returns NONE
83
- * @description Cierra la conexion del Perfil de la base de datos pasado como parametro.
108
+ * @param {string} databaseName - Perfil de la base de datos (clave de configuración).
109
+ * @returns {Promise<void>}
110
+ * @description Cierra la conexion del Perfil de la base de datos especificada.
84
111
  */
85
- async function close(databaseName)
112
+ async function close(databaseName, config)
86
113
  {
87
114
  if (connections[databaseName])
88
115
  {
@@ -94,9 +121,15 @@ async function close(databaseName)
94
121
  case 'mysql':
95
122
  await mysql.close(connections[databaseName]);
96
123
  break;
124
+ // case 'mariadb': // agregamos el caso MariaDB
125
+ // await mariadb.close(connections[databaseName]);
126
+ // break;
97
127
  case 'oracle':
98
128
  await oracle.close(connections[databaseName]);
99
129
  break;
130
+ // case 'mongodb':
131
+ // await mongodb.close(connections[databaseName]);
132
+ // break;
100
133
  }
101
134
  delete connections[databaseName];
102
135
  }
@@ -112,6 +145,7 @@ async function close(databaseName)
112
145
  * @returns {result} result/err - Devuelve un objeto con el set de datos o un objeto err con la respuesta del error
113
146
  * @description Ejecuta una sentencia SQL y devuelve un objeto en un set de datos
114
147
  */
148
+
115
149
 
116
150
 
117
151
  module.exports =