Commit 22d732ce authored by Nguyễn Hải Sơn's avatar Nguyễn Hải Sơn

Update base

parent 5e34216d
Pipeline #246 failed with stages
......@@ -1262,6 +1262,15 @@
}
}
},
"express-validator": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.10.0.tgz",
"integrity": "sha512-gDtepU94EpUzgFvKO/8JzjZ4uqIF4xHekjYtcNgFDiBK6Hob3MQhPU8s/c3NaWd1xi5e5nA0oVmOJ0b0ZBO36Q==",
"requires": {
"lodash": "^4.17.20",
"validator": "^13.5.2"
}
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
......@@ -1815,8 +1824,7 @@
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"lodash.clonedeep": {
"version": "4.5.0",
......@@ -2802,6 +2810,11 @@
"integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
"dev": true
},
"validator": {
"version": "13.5.2",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz",
"integrity": "sha512-mD45p0rvHVBlY2Zuy3F3ESIe1h5X58GPfAtslBjY7EtTqGquZTj+VX/J4RnHWN8FKq0C9WRVt1oWAcytWRuYLQ=="
},
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
......
......@@ -26,6 +26,7 @@
"dependencies": {
"@types/mysql": "^2.15.18",
"express": "^4.17.1",
"express-validator": "^6.10.0",
"http-status-codes": "^2.1.4",
"mysql": "^2.18.1"
}
......
import { AppConfig } from './configurations/app-config';
import express from 'express';
import demoApi from './routes/demo-api';
import meetingRoom from './routes/meeting-rooms';
import device from './routes/device';
const app = express();
app.use('/demo-api', demoApi);
app.use('/devices', device);
app.use('/meeting-rooms', meetingRoom);
app.listen(AppConfig.PORT, () => console.log(`Server is running on port ${AppConfig.PORT}`));
import { DB_POOL } from '../../database/qldh-mysql';
import { Device } from '../../models/Device';
export const getListDevice = (pageIndex: number = 1, pageSize: number = 10, keyword: string) => {
console.log(pageIndex, pageSize);
return new Promise<Array<Device>>((resolve, reject) => {
let query = 'select * from device';
if (keyword) {
query += ` where name like ${DB_POOL.escape(`%${keyword}%`)}`;
}
query += ` limit ${DB_POOL.escape((pageIndex - 1) * pageSize)}, ${DB_POOL.escape(pageSize)}`;
console.log(query);
DB_POOL.query(query, (error, results: Array<Device>) => {
if (error) {
reject(error);
} else {
resolve(results);
}
});
});
};
import { Request, Response, Router } from 'express';
import { validationResult } from 'express-validator';
import { StatusCodes, ReasonPhrases } from 'http-status-codes';
import { getListDevice } from '../../functions/devices';
import { deviceListValidator } from '../../validators/devices';
const route = Router();
route.get('/', deviceListValidator, async (req: Request, res: Response) => {
try {
const errors = validationResult(req);
if (errors.isEmpty()) {
const devices = await getListDevice(
Number(req.query.pageIndex),
Number(req.query.pageSize),
req.query.keyword as string,
);
res.status(StatusCodes.OK).send(devices);
} else {
res.status(StatusCodes.UNPROCESSABLE_ENTITY).send({
errors: errors.array(),
message: ReasonPhrases.UNPROCESSABLE_ENTITY,
});
}
} catch (error) {
res.status(StatusCodes.INTERNAL_SERVER_ERROR).send(error);
}
});
export default route;
import { check } from 'express-validator';
export const deviceListValidator = [
check('pageIndex', 'Please provide pageIndex').isNumeric(),
check('pageSize', 'Please provide pageSize').isNumeric(),
check('keyword', 'Please provide keyword').optional().isString(),
];
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment