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
79 changes: 79 additions & 0 deletions api/Qrouter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import { checkUserValid, getProducts } from './controller/main';
import { get_items, create_item,
set_state_all_item, update_item,
delete_item, delete_follow_state,
get_categorys, create_list, get_lists, update_list,
delete_list, get_list_quantity, reset_list_primary,
get_info_account, set_selected_item, get_count_selected,
set_selected_all_item,set_state_item_selected, delete_item_selected
} from "./controller/items";
import jwt from 'jsonwebtoken';

const Qroutes = (app) => {
app.route('/account').post(checkUserValid);
app.route('/products').get(getProducts);
app.route('/get_items/:USER_ID&:LIST_ID').get(get_items)
app.route('/create_item').post(create_item)
app.route('/update_item').post(update_item)
app.route('/delete_item').post(delete_item)
app.route('/delete_all_item').post(delete_follow_state)
app.route('/set_state_all_item').post(set_state_all_item)
app.route('/get_categorys').get(get_categorys)
app.route('/create_list').post(create_list);
app.route('/get_lists/:USER_ID').get(get_lists);
app.route('/update_list').post(update_list);
app.route('/delete_list').post(delete_list);
app.route('/get_list_quantity/:LIST_ID').get(get_list_quantity);
app.route('/reset_list_primary').put(reset_list_primary);
app.route('/get_info_account/:USER_ID').get(get_info_account);
app.route('/set_selected_item').post(set_selected_item);
app.route('/get_count_selected').post(get_count_selected);
app.route('/set_selected_all_item').post(set_selected_all_item);
app.route('/set_state_item_selected').post(set_state_item_selected);
app.route('/delete_item_selected').post(delete_item_selected);

app.post('/api/login', (req, res) => {
// Mock user
const user = {
USERNAME: req.body.username,
PASS: req.body.password
}

jwt.sign({user}, 'secretkey', { expiresIn: '1h' }, (err, token) => {
res.json({
token
});
});
});

app.post('/api/verify_token', verifyToken, (req, res) => {
jwt.verify(req.token , 'secretkey', (err, authData) => {
if (err) {
res.json("Token Is Invalid");
}
else {
res.json({
authData
});
}
})
})

function verifyToken(req, res, next){
const bearerHeader = req.body.headers['Authorization'];
// console.log("bearer :", bearerHeader);

if(typeof bearerHeader !== 'undefined'){
const bearer = bearerHeader.split(' ');
const bearerToken = bearer[1];

req.token = bearerToken;
next();
} else {
res.json("Token Fail");
}

}
}

export default Qroutes;
173 changes: 173 additions & 0 deletions api/controller/items.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
import db from '../db';

export const get_items = (req , res) => {
let sql = `SELECT Item.* FROM
((List INNER JOIN Account ON List.USER_ID=Account.USER_ID)
INNER JOIN Item ON List.LIST_ID=Item.LIST_ID) WHERE Account.USER_ID='${req.params.USER_ID}'
AND List.LIST_ID='${req.params.LIST_ID}'`
db.query(sql , (err, response) => {
if (err) throw err;
res.json(response);
})
}

export const create_item = (req , res) => {
let listID = req.body.LIST_ID;
let itemName = req.body.ITEM_NAME;
let itemPicture = req.body.ITEM_PICTURE;
let itemNote = req.body.ITEM_NOTE;
let categoryID = req.body.CATEGORY_ID;

let sql = `CALL create_item('${listID}', '${itemName}', '${itemPicture}','${itemNote}', '${categoryID}');`
db.query(sql , (err, response) => {
if (err) throw err;
res.json(response);
})
}

export const update_item = (req , res) => {
let name = req.body.ITEM_NAME;
let quantity = req.body.ITEM_QUANTITY
let note = req.body.ITEM_NOTE;
let is_checked = req.body.IS_CHECKED;
let item_id = req.body.ITEM_ID;

let sql = `UPDATE Item SET ITEM_NAME='${name}' ,ITEM_QUANTITY=${quantity}, ITEM_NOTE='${note}', IS_CHECKED=${is_checked} WHERE ITEM_ID=${item_id}`;
db.query(sql, (err , response ) => {
if (err) throw err;
res.json(response);
})
}

export const delete_item = (req , res) => {
let sql = `DELETE FROM Item WHERE ITEM_ID=${req.body.ITEM_ID}`
db.query(sql, (err , response ) => {
if (err) throw err;
res.json(response);
})
}

export const delete_follow_state = (req , res) => {
let sql = `DELETE FROM Item WHERE IS_CHECKED=${req.body.IS_CHECKED}`
db.query(sql, (err , response ) => {
if (err) throw err;
res.json(response);
})
}

export const set_state_all_item = (req , res) => {
let is_checked = req.body.IS_CHECKED;
let sql = `UPDATE Item SET IS_CHECKED = ${is_checked}`
db.query(sql, (err , response ) => {
if (err) throw err;
res.json(response);
})
}

export const get_categorys = (req , res) => {
let sql = `SELECT * FROM Category ORDER BY CATEGORY_NAME`
db.query(sql , (err , response) => {
if(err) throw err;
res.json(response)
})
}

export const create_list = (req, res) => {
const sql = `INSERT INTO List (USER_ID, LIST_NAME, IS_PRIMARY)
VALUES (${req.body.USER_ID}, '${req.body.LIST_NAME}', ${req.body.IS_PRIMARY} )`
db.query(sql , (err, response) => {
if(err) throw err;
res.json(response.insertId);
})
}

export const get_lists = (req, res) => {
const sql = `SELECT * FROM List WHERE USER_ID=${req.params.USER_ID}`
db.query(sql, (err, response)=>{
if(err) throw err
res.json(response);
})
}

export const update_list = (req , res) => {
const sql = `UPDATE List SET LIST_NAME='${req.body.LIST_NAME}', IS_PRIMARY=${req.body.IS_PRIMARY}
WHERE LIST_ID=${req.body.LIST_ID}`;
db.query(sql, (err, response) => {
if(err) throw err;
res.json(response);
})
}

export const delete_list = (req, res) => {
const sql = `DELETE FROM List WHERE LIST_ID=${req.body.LIST_ID}`
db.query(sql , (err , response) => {
if(err) throw err;
res.json(response);
})
}

export const get_list_quantity = (req, res) => {
const sql = `SELECT COUNT(ITEM_ID) FROM Item WHERE LIST_ID=${req.params.LIST_ID}`
db.query(sql, (err, response) => {
if(err) throw err;
res.json(response)
})
}

export const reset_list_primary = (req , res) => {
const sql = `UPDATE List SET IS_PRIMARY = false`
db.query(sql, (err, response) => {
if (err) throw err;
res.json(response);
})
}

export const get_info_account = (req, res) => {
const sql = `SELECT * FROM Account WHERE USER_ID=${req.params.USER_ID}`
db.query(sql, (err, response) => {
res.json(response);
})
}

export const set_selected_item = (req, res) => {
const sql = `UPDATE Item SET IS_SELECTED = ${req.body.IS_SELECTED}
WHERE ITEM_ID=${req.body.ITEM_ID}`
db.query(sql, (err, response) => {
if(err) throw err;
res.json(response);
})
}

export const get_count_selected = (req , res) => {
const sql = `SELECT COUNT(ITEM_ID) FROM Item WHERE IS_SELECTED=true
AND LIST_ID=${req.body.LIST_ID}`
db.query(sql, (err, response) => {
if (err) throw err
res.json(response)
})
}

export const set_selected_all_item = (req, res) => {
const sql = `UPDATE Item SET IS_SELECTED=${req.body.IS_SELECTED}
WHERE IS_CHECKED = ${req.body.IS_CHECKED}`;
db.query(sql, (err, response)=>{
if (err) throw err;
res.json(response);
})
}

export const set_state_item_selected = (req , res) => {
let sql = `UPDATE Item SET IS_CHECKED = true WHERE IS_SELECTED=true`
db.query(sql, (err , response ) => {
if (err) throw err;
res.json(response);
})
}

export const delete_item_selected = (req , res) => {
let sql = `DELETE FROM Item WHERE IS_SELECTED=true`
db.query(sql, (err , response ) => {
if (err) throw err;
res.json(response);
})
}
22 changes: 22 additions & 0 deletions api/controller/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// import mysql from 'mysql';
import db from '../db';

export const getProducts = (req, res) => {
let sql = 'SELECT * FROM Products'
db.query(sql, (err, response) => {
if (err) throw err
// res.status(400);
res.json(response)
})
}

export const checkUserValid = (req , res) => {
let USERNAME = req.body.USERNAME;
let PASS = req.body.PASS;

let sql = `SELECT * FROM Account WHERE USERNAME='${USERNAME}' AND '${PASS}'`
db.query(sql, (err, response) => {
if(err) throw err
res.json(response);
})
}
2 changes: 1 addition & 1 deletion api/controller/product.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import db from '../db';

export const getProducts = (req, res) => {
let sql = 'SELECT * FROM products'
let sql = 'SELECT * FROM Products'
db.query(sql, (err, response) => {
if (err) throw err
// res.status(400);
Expand Down
2 changes: 2 additions & 0 deletions api/db.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ dotenv.config();
const db = mysql.createConnection({
host: process.env.DB_HOST || "localhost",
user: process.env.DB_USER || "root",
password: process.env.DB_PASSWORD || "1",
database: process.env.DB_NAME || "shopping-list",
password: process.env.DB_PASS || "1",
database: process.env.DB_NAME || "node_api"
})
Expand Down
4 changes: 3 additions & 1 deletion build/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,7 @@ app.get('/', function (req, res) {
return res.status(200).send({ 'message': 'YAY! Congratulations! Your first endpoint is working' });
});

app.listen(process.env.PORT);
console.log('app running on port ', process.env.PORT);
app.listen(7000);
console.log('app running on port ',7000);
console.log('app running on port ',7000);
Loading