minervajs-helmet 1.0.3 → 1.0.6
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 +23 -23
- package/config/settings.js +44 -0
- package/js/db_mysql.js +42 -2
- package/js/db_postgres.js +21 -0
- package/package.json +4 -3
- package/src/db.js +123 -0
- package/settings.js +0 -20
- package/src/index.js +0 -7
- /package/js/{db.js → OLD db.js} +0 -0
package/README.md
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
# MinervaJS.Helmet
|
|
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
|
|
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
|
|
4
|
+
Ejemplo: Partiendo de un proyecto en blanco recien creado
|
|
5
|
+
> npm i minervajs-helmet
|
|
6
6
|
|
|
7
|
-
Archivo: index.js
|
|
7
|
+
Archivo: index.js
|
|
8
8
|
|
|
9
|
-
var db = require('minervajs-helmet');
|
|
9
|
+
var db = require('minervajs-helmet');
|
|
10
10
|
|
|
11
|
-
var l_sql = " SELECT P.id, " +
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
22
|
|
|
23
|
-
db.executeSQL(l_sql, function(a_data, err)
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
});
|
|
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
|
+
});
|
|
30
30
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* @name settings
|
|
4
|
+
* @description Modulo gestor de la coneccion a la base de datos
|
|
5
|
+
* Configuracion de la Base de Datos
|
|
6
|
+
*
|
|
7
|
+
* Se incluye un ejemplo de uso, segun el tipo de base de datos
|
|
8
|
+
*/
|
|
9
|
+
exports.httpMsgFormat = 'HTML';
|
|
10
|
+
exports.Title = "MinervaJS - Helmet";
|
|
11
|
+
exports.Rights_Reserved = "2023-2025 © A&C Consultoría Informática";
|
|
12
|
+
|
|
13
|
+
module.exports = {
|
|
14
|
+
/*
|
|
15
|
+
* 'mi_postgres':
|
|
16
|
+
* {
|
|
17
|
+
* type: 'postgres',
|
|
18
|
+
* host: 'localhost',
|
|
19
|
+
* port: 5432,
|
|
20
|
+
* user: 'usuario',
|
|
21
|
+
* password: 'contraseña',
|
|
22
|
+
* database: 'nombre_db'
|
|
23
|
+
* },
|
|
24
|
+
*/
|
|
25
|
+
'my_mysql':
|
|
26
|
+
{
|
|
27
|
+
type: 'mysql',
|
|
28
|
+
host: 'sql3.freesqldatabase.com' // 'localhost',
|
|
29
|
+
port: 3306, //
|
|
30
|
+
user: 'sql3772729' // 'usuario',
|
|
31
|
+
password: 'esUA3qpGKD' // 'contraseña',
|
|
32
|
+
database: 'sql3772729' // 'nombre_db'
|
|
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
|
+
|
|
44
|
+
};
|
package/js/db_mysql.js
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* @name db_mysql
|
|
4
4
|
* @description Modulo gestor de la coneccion a la base de datos, MySQL, utiliza el cliente mysql2
|
|
5
5
|
*
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
*
|
|
7
|
+
var mysql = require('mysql2');
|
|
8
8
|
var settings = require('../js/settings');
|
|
9
9
|
|
|
10
|
+
|
|
10
11
|
exports.executeSQL = function (sql, callback)
|
|
11
12
|
{
|
|
12
13
|
var con = new mysql.createConnection(settings.dbConfig);
|
|
@@ -58,3 +59,42 @@ exports.executeSQLarray = function (sql, array, callback)
|
|
|
58
59
|
});
|
|
59
60
|
});
|
|
60
61
|
}
|
|
62
|
+
*/
|
|
63
|
+
const mysql = require('mysql2/promise'); // Usamos mysql2/promise para async/await
|
|
64
|
+
|
|
65
|
+
async function connect(config) {
|
|
66
|
+
try {
|
|
67
|
+
const connection = await mysql.createConnection({
|
|
68
|
+
host: config.host,
|
|
69
|
+
port: config.port,
|
|
70
|
+
user: config.user,
|
|
71
|
+
password: config.password,
|
|
72
|
+
database: config.database,
|
|
73
|
+
});
|
|
74
|
+
return connection;
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error('Error al conectar a MySQL:', error);
|
|
77
|
+
throw error; // Re-lanzamos el error para que sea manejado por el llamador
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function query(connection, sql, values = []) {
|
|
82
|
+
try {
|
|
83
|
+
const [rows, fields] = await connection.execute(sql, values);
|
|
84
|
+
return rows;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
console.error('Error al ejecutar la consulta MySQL:', error);
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
async function close(connection) {
|
|
92
|
+
try {
|
|
93
|
+
await connection.end();
|
|
94
|
+
} catch (error) {
|
|
95
|
+
console.error('Error al cerrar la conexión MySQL:', error);
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
module.exports = { connect, query, close };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const { Client } = require('pg');
|
|
2
|
+
|
|
3
|
+
async function connect(config)
|
|
4
|
+
{
|
|
5
|
+
const client = new Client(config);
|
|
6
|
+
await client.connect();
|
|
7
|
+
return client;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
async function query(client, sql)
|
|
11
|
+
{
|
|
12
|
+
const result = await client.query(sql);
|
|
13
|
+
return result.rows;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
async function close(client)
|
|
17
|
+
{
|
|
18
|
+
await client.end();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = { connect, query, close };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "minervajs-helmet",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "src/
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"main": "src/db.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
7
7
|
},
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"description": "Modulo para la gestion de coneccion a la base de datos, de diferentes tipos mediante el uso de sobre Carga y Herencia de clases",
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"mysql2": "^3.14.0",
|
|
20
|
-
"oracledb": "^6.6.0"
|
|
20
|
+
"oracledb": "^6.6.0",
|
|
21
|
+
"pg": "^8.14.1"
|
|
21
22
|
},
|
|
22
23
|
"repository": {
|
|
23
24
|
"type": "git",
|
package/src/db.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @name MinervaJS-Helmet
|
|
4
|
+
* @description Modulo gestor de la coneccion a la base de datos
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
const postgres = require('./js/db_postgres');
|
|
8
|
+
const mysql = require('./js/db_mysql');
|
|
9
|
+
const oracle = require('./js/db_oracle');
|
|
10
|
+
const config = require('./config/settings');
|
|
11
|
+
|
|
12
|
+
const connections = {};
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @function
|
|
17
|
+
* @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
|
|
21
|
+
*/
|
|
22
|
+
async function connect(databaseName)
|
|
23
|
+
{
|
|
24
|
+
const dbConfig = config[databaseName];
|
|
25
|
+
if (!dbConfig) {
|
|
26
|
+
throw new Error(`Configuración de base de datos '${databaseName}' no encontrada.`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (connections[databaseName])
|
|
30
|
+
{
|
|
31
|
+
return connections[databaseName]; // Ya existe una conexión
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
switch (dbConfig.type)
|
|
35
|
+
{
|
|
36
|
+
case 'postgres':
|
|
37
|
+
connections[databaseName] = await postgres.connect(dbConfig);
|
|
38
|
+
break;
|
|
39
|
+
case 'mysql':
|
|
40
|
+
connections[databaseName] = await mysql.connect(dbConfig);
|
|
41
|
+
break;
|
|
42
|
+
case 'oracle':
|
|
43
|
+
connections[databaseName] = await oracle.connect(dbConfig);
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error(`Tipo de base de datos '${dbConfig.type}' no soportado.`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return connections[databaseName];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @function
|
|
54
|
+
* @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
|
|
59
|
+
*/
|
|
60
|
+
async function query(databaseName, sql)
|
|
61
|
+
{
|
|
62
|
+
const connection = await connect(databaseName);
|
|
63
|
+
const dbConfig = config[databaseName];
|
|
64
|
+
|
|
65
|
+
switch (dbConfig.type)
|
|
66
|
+
{
|
|
67
|
+
case 'postgres':
|
|
68
|
+
return postgres.query(connection, sql);
|
|
69
|
+
case 'mysql':
|
|
70
|
+
return mysql.query(connection, sql);
|
|
71
|
+
case 'oracle':
|
|
72
|
+
return oracle.query(connection, sql);
|
|
73
|
+
default:
|
|
74
|
+
throw new Error(`Tipo de base de datos '${dbConfig.type}' no soportado para la operación 'query'.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @function
|
|
80
|
+
* @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.
|
|
84
|
+
*/
|
|
85
|
+
async function close(databaseName)
|
|
86
|
+
{
|
|
87
|
+
if (connections[databaseName])
|
|
88
|
+
{
|
|
89
|
+
const dbConfig = config[databaseName];
|
|
90
|
+
switch (dbConfig.type) {
|
|
91
|
+
case 'postgres':
|
|
92
|
+
await postgres.close(connections[databaseName]);
|
|
93
|
+
break;
|
|
94
|
+
case 'mysql':
|
|
95
|
+
await mysql.close(connections[databaseName]);
|
|
96
|
+
break;
|
|
97
|
+
case 'oracle':
|
|
98
|
+
await oracle.close(connections[databaseName]);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
delete connections[databaseName];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @function
|
|
109
|
+
* @name executeSQL
|
|
110
|
+
* @param {string} sql - Sentencia SQL a ejecutar
|
|
111
|
+
* @param {Promise<callback>} callback - objeto, para retornar la promesa
|
|
112
|
+
* @returns {result} result/err - Devuelve un objeto con el set de datos o un objeto err con la respuesta del error
|
|
113
|
+
* @description Ejecuta una sentencia SQL y devuelve un objeto en un set de datos
|
|
114
|
+
*/
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
module.exports =
|
|
118
|
+
{
|
|
119
|
+
connect,
|
|
120
|
+
query,
|
|
121
|
+
close,
|
|
122
|
+
// ... otras funciones comunes
|
|
123
|
+
};
|
package/settings.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @module
|
|
3
|
-
* @name db
|
|
4
|
-
* @description Modulo gestor de la coneccion a la base de datos
|
|
5
|
-
* dbConfig Configuracion de la Base de Datos
|
|
6
|
-
*/
|
|
7
|
-
exports.httpMsgFormat = 'HTML';
|
|
8
|
-
exports.Title = "DB Smarts Docs";
|
|
9
|
-
exports.Rights_Reserved = "2023-2025 © A&C Consultoría Informática";
|
|
10
|
-
|
|
11
|
-
exports.dbConfig =
|
|
12
|
-
{
|
|
13
|
-
// mysql
|
|
14
|
-
// host: "localhost o IP",
|
|
15
|
-
user: "User",
|
|
16
|
-
password: "Password01",
|
|
17
|
-
// database: "DBSisConta"
|
|
18
|
-
connectString : "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=namehostoip)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=servicename)))"
|
|
19
|
-
};
|
|
20
|
-
|
package/src/index.js
DELETED
/package/js/{db.js → OLD db.js}
RENAMED
|
File without changes
|