Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions API/config/database.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
module.exports = {
hrPool: {
user: "system",
password: "shukhu",
connectString: "localhost:1521/xe",
poolMin: 10,
poolMax: 10,
poolIncrement: 0
}
};
3 changes: 3 additions & 0 deletions API/config/web-server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
port : process.env.HTTP_PORT || 3000
};
27 changes: 27 additions & 0 deletions API/controllers/add.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
const users = require('../db_apis/add.js');
function getUserFromRec(req) {
const user = {
name: req.body.name,
email: req.body.email,
password: req.body.password,
contact: req.body.contact,
city: req.body.city,
address: req.body.address
};

return user;
}

async function post(req, res, next) {
try {

let user = getUserFromRec(req);
user = await users.create(user);

res.status(201).json(user);
} catch (err) {
next(err);
}
}

module.exports.post = post;
28 changes: 28 additions & 0 deletions API/controllers/change.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const change = require('../db_apis/change.js');

async function put(req, res, next) {
try {
const context = {};

context.id = parseInt(req.params.id, 10);



if (req.params.id) {
const rows = await change.put(context.id,req.body.password);
if (rows===1) {

res.status(200).end();

} else {
res.status(404).end();
}
} else {
res.status(400).end();
}
} catch (err) {
next(err);
}
}

module.exports.put = put;
16 changes: 16 additions & 0 deletions API/controllers/del.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const users = require('../db_apis/del.js');

async function del(req, res, next) {
try {
const id = parseInt(req.params.id, 10);
const success = await users.delete(id);
if (success) {
res.status(204).end();
} else {
res.status(404).end();
}
} catch (err) {
next(err);
}
}
module.exports.delete = del;
26 changes: 26 additions & 0 deletions API/controllers/search.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const users = require('../db_apis/search.js');

async function get(req, res, next) {
try {
const context = {};

context.tag = req.params.tag;

const rows = await users.find(context);

if (req.params.tag) {
if (rows.length > 0) {
res.status(200).json(rows);

} else {
res.status(404).end();
}
} else {
res.status(404).end();
}
} catch (err) {
next(err);
}
}

module.exports.get = get
26 changes: 26 additions & 0 deletions API/controllers/users.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const users = require('../db_apis/users.js');

async function get(req, res, next) {
try {
const context = {};

context.id = parseInt(req.params.id, 10);

const rows = await users.find(context);

if (req.params.id) {
if (rows.length === 1) {
res.status(200).json(rows[0]);

} else {
res.status(404).end();
}
} else {
res.status(200).json(rows);
}
} catch (err) {
next(err);
}
}

module.exports.get = get
38 changes: 38 additions & 0 deletions API/db_apis/add.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const database = require('../services/database.js');
const oracledb = require('oracledb');
const createSql =
`insert into users (
id,
name,
email,
password,
contact,
city,
address
) values (
:user_id,
:name,
:email,
:password,
:contact,
:city,
:address
)`;

async function create(id) {
const user = Object.assign({}, id);
var query = "SELECT id FROM users order by id desc";
var res = await database.simpleExecute(query);

user.user_id=1;
if(res.rows.length>0)
user.user_id += res.rows[0].ID;
const result = await database.simpleExecute(createSql, user);


return user.user_id;


}

module.exports.create = create;
25 changes: 25 additions & 0 deletions API/db_apis/change.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

const database = require('../services/database.js');

let baseQuery =
`update users set password = :pass
where id = :user_id`;


async function put(id,password) {
const binds = {

};
binds.user_id=id;

let query = `select * from users
where id = :user_id`;
var result = await database.simpleExecute(query, binds);
if(result.rows.length === 1)
{
binds.pass=password;
const result1 = await database.simpleExecute(baseQuery, binds);
return 1;}
else
return 0;}
module.exports.put = put;
24 changes: 24 additions & 0 deletions API/db_apis/del.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@

const database = require('../services/database.js');

let baseQuery =
`delete from users
where id = :user_id`;


async function del(id) {
const binds = {

};
binds.user_id=id;
let query = `select * from users
where id = :user_id`;
const result = await database.simpleExecute(query, binds);
if(result.rows.length === 1)
{
const result1 = await database.simpleExecute(baseQuery, binds);
return 1;
}
else
return 0;}
module.exports.delete = del;
26 changes: 26 additions & 0 deletions API/db_apis/search.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

const database = require('../services/database.js');



async function find(context) {

const binds = {};

let user_tag ="'"+context.tag+"'";
binds.user_id=context.tag;

const baseQuery =
`select *
from users`;
let query = baseQuery;
query += '\nwhere name = '+ user_tag + ' or city = '+ user_tag + ' or email = '+ user_tag + 'or address = '+ user_tag + ' or contact = '+ user_tag;



const result = await database.simpleExecute(query);

return result.rows;
}

module.exports.find = find;
23 changes: 23 additions & 0 deletions API/db_apis/users.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

const database = require('../services/database.js');

const baseQuery =
`select *
from users`;

async function find(context) {
let query = baseQuery;
const binds = {};
if (context.id) {
binds.user_id = context.id;

query += `\nwhere id = :user_id`;
}


const result = await database.simpleExecute(query,binds);

return result.rows;
}

module.exports.find = find;
83 changes: 83 additions & 0 deletions API/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
const webServer = require('./services/web-server.js');
const database = require('./services/database.js');
const dbConfig = require('./config/database.js');
const defaultThreadPoolSize = 4;

// Increase thread pool size by poolMax
process.env.UV_THREADPOOL_SIZE = dbConfig.hrPool.poolMax + defaultThreadPoolSize;

async function startup() {
console.log('Starting application');

try {
console.log('Initializing web server module');

await webServer.initialize();
} catch (err) {
console.error(err);

process.exit(1); // Non-zero failure code
}
try {
console.log('Initializing database module');

database.initialize();
} catch (err) {
console.error(err);

process.exit(1); // Non-zero failure code
}
}

startup();
async function shutdown(e) {
let err = e;

console.log('Shutting down');

try {
console.log('Closing web server module');

await webServer.close();
} catch (e) {
console.log('Encountered error', e);

err = err || e;
}
try {
console.log('Closing database module');

await database.close();
} catch (err) {
console.log('Encountered error', e);

err = err || e;
}

console.log('Exiting process');

if (err) {
process.exit(1); // Non-zero failure code
} else {
process.exit(0);
}
}

process.on('SIGTERM', () => {
console.log('Received SIGTERM');

shutdown();
});

process.on('SIGINT', () => {
console.log('Received SIGINT');

shutdown();
});

process.on('uncaughtException', err => {
console.log('Uncaught exception');
console.error(err);

shutdown(err);
});
Loading