Skip to content

Instantly share code, notes, and snippets.

@ctala
Created December 5, 2019 20:03
Show Gist options
  • Save ctala/2a82bbac1ff7a9ae84daa1443b90ab1a to your computer and use it in GitHub Desktop.
Save ctala/2a82bbac1ff7a9ae84daa1443b90ab1a to your computer and use it in GitHub Desktop.
Probando Serverless Lambda y Proxy RDS Integration
'use strict';
const mysql = require('mysql2');
const connectionParams = {
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
port: process.env.DB_PORT,
};
let connection;
module.exports.hello = async event => {
console.log("Starting query ...", connectionParams);
connection = mysql.createConnection(connectionParams);
/**
* Inicializamos los resultados por defecto del return.
* En primera instancia siempre retornamos error a menos que se demuestre lo contrario
*/
let queryResult;
let statusCode = 500;
let bodyMessage = {};
/**
* Siempre retornamos en el finally, lo que hacemos es cambiar el contenido del mensaje.
*/
try {
await connect(); //Conectamos
queryResult = await testQuery(); //Generamos la query
await connectionEnd(); //Cerramos conexión
statusCode = 200;
bodyMessage = queryResult;
} catch (error) {
console.log(error);
statusCode = 500;
bodyMessage = {
error: error
}
} finally {
return responseMessage(statusCode, bodyMessage);
}
};
function responseMessage(statusCode = 200, body = {}) {
return {
statusCode: statusCode,
body: JSON.stringify(body,
null,
2
),
};
}
function connect() {
return new Promise((resolve, reject) => {
connection.connect(function (err) {
if (err) {
console.error('error connecting: ' + err.stack);
reject(err);
} else {
resolve(connect.threadId);
}
})
})
}
function testQuery() {
return new Promise((resolve, reject) => {
connection.query("SELECT * FROM user LIMIT 10", function (err, result, fields) {
if (err) {
reject(err);
} else {
console.log(result);
resolve(result);
}
});
})
}
function connectionEnd() {
return new Promise((resolve, reject) => {
connection.end(function (error, results) {
// The connection is terminated now
console.log("Connection ended");
if (error) {
reject(error);
} else {
resolve(results);
}
});
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment