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 +61 -27
- package/config/settings.js +24 -15
- package/js/OLD db.js +3 -4
- package/js/db_mariadb.js +69 -0
- package/js/db_mongodb.js +49 -0
- package/js/db_mysql.js +37 -62
- package/js/db_oracle.js +38 -0
- package/js/db_postgres.js +39 -0
- package/package.json +1 -1
- package/src/db.js +53 -19
package/README.md
CHANGED
|
@@ -1,30 +1,64 @@
|
|
|
1
|
-
# MinervaJS
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
Archivo:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
|
package/config/settings.js
CHANGED
|
@@ -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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
|
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
|
+
}
|
package/js/db_mariadb.js
ADDED
|
@@ -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
|
+
|
package/js/db_mongodb.js
ADDED
|
@@ -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
|
|
4
|
-
* @description
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
package/src/db.js
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
*
|
|
3
3
|
* @name MinervaJS-Helmet
|
|
4
|
-
* @
|
|
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
|
|
12
|
+
// const mongodb = require('./lib/mongodb');
|
|
13
|
+
// const mariadb = require('./lib/mariadb');
|
|
11
14
|
|
|
12
15
|
const connections = {};
|
|
13
16
|
|
|
14
|
-
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
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 {
|
|
20
|
-
* @
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
58
|
-
* @
|
|
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
|
-
*
|
|
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
|
-
|
|
83
|
-
* @description Cierra la conexion del Perfil de la base de datos
|
|
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 =
|