express-generator-typescript
Version:
Generate new Express applications similar to express-generate which but sets it up to use TypeScript instead
78 lines (66 loc) • 2.13 kB
text/typescript
import { isNumber } from 'jet-validators';
import { transform } from 'jet-validators/utils';
import HttpStatusCodes from '@src/common/constants/HttpStatusCodes';
import User from '@src/models/User.model';
import UserService from '@src/services/UserService';
import { Req, Res } from './common/express-types';
import parseReq from './common/parseReq';
/******************************************************************************
Constants
******************************************************************************/
const reqValidators = {
add: parseReq({ user: User.isComplete }),
update: parseReq({ user: User.isComplete }),
delete: parseReq({ id: transform(Number, isNumber) }),
} as const;
/******************************************************************************
Functions
******************************************************************************/
/**
* Get all users.
*
* @route GET /api/users/all
*/
async function getAll(_: Req, res: Res) {
const users = await UserService.getAll();
res.status(HttpStatusCodes.OK).json({ users });
}
/**
* Add one user.
*
* @route POST /api/users/add
*/
async function add(req: Req, res: Res) {
const { user } = reqValidators.add(req.body);
await UserService.addOne(user);
res.status(HttpStatusCodes.CREATED).end();
}
/**
* Update one user.
*
* @route PUT /api/users/update
*/
async function update(req: Req, res: Res) {
const { user } = reqValidators.update(req.body);
await UserService.updateOne(user);
res.status(HttpStatusCodes.OK).end();
}
/**
* Delete one user.
*
* @route DELETE /api/users/delete/:id
*/
async function delete_(req: Req, res: Res) {
const { id } = reqValidators.delete(req.params);
await UserService.delete(id);
res.status(HttpStatusCodes.OK).end();
}
/******************************************************************************
Export default
******************************************************************************/
export default {
getAll,
add,
update,
delete: delete_,
} as const;