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 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
- " 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 ";
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
- if (err)
26
- {console.log(err);}
27
- else
28
- {console.log(a_data);}
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
- var mysql = require('mysql2');
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.3",
4
- "main": "src/index.js",
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 &copy; 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
@@ -1,7 +0,0 @@
1
- /**
2
- *
3
- * @name MinervaJS-Helmet
4
- * @description Modulo gestor de la coneccion a la base de datos
5
- *
6
- */
7
-
File without changes