You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.1 KiB

// testing :
// https://mariadb.com/kb/en/nodejs-connector/
const http = require ('http'); // to create server
const url = require('url'); // to parse url
const BASIC_API_PORT = 3998;
const DB_HOST = "127.0.0.1",
DB_PORT = "3306",
DB_USR = "nodeapi",
DB_PWD = "RDSGF435FG",
DB_NAME = "nodeapi";
const mariadb = require('mariadb');
const pool = mariadb.createPool({
host: DB_HOST,
port: DB_PORT,
user: DB_USR,
password:DB_PWD,
database: DB_NAME,
connectionLimit: 5,
});
//const server = http.createServer(function (req, resp) {
const app = http.createServer
(
async (req, res) =>
{
const parsedURL = url.parse(req.url, true);
var response_text = "";
if(req.method === 'GET' && parsedURL.pathname.startsWith('/api/tables'))
{
console.log('requesting table list');
var cnx = null;
try
{
cnx=await pool.getConnection();
const tables_res = await cnx.query("SHOW TABLES");
console.log(tables_res);
response_text += tables_res.length+" table"+(tables_res.length>1?"s":"")+" found";
//console.log(response_text);
if(tables_res.length > 0)
{
Object.keys(tables_res).forEach(function(key) {
if(key !== 'meta')
{
var row=tables_res[key];
response_text+= "\n - "+row['Tables_in_'+DB_NAME];
}
});
}
}
catch(err)
{
throw(err);
}
finally
{
res.statusCode = 200;
res.end(response_text);
if(cnx)
{
return cnx.end();
}
}
}
else
{
res.statusCode = 400;
res.end("API Endpoint Not Supported");
}
}
);
app.listen(BASIC_API_PORT);
console.log('mariadb test api started');