express-generator-typescript
Version:
Generate new Express applications similar to express-generate which but sets it up to use TypeScript instead
65 lines (55 loc) • 1.74 kB
text/typescript
import HttpStatusCodes from '@src/common/constants/HttpStatusCodes';
import { RouteError } from '@src/common/utils/route-errors';
import { IUser } from '@src/models/User.model';
import UserRepo from '@src/repos/UserRepo';
/******************************************************************************
Constants
******************************************************************************/
const Errors = {
USER_NOT_FOUND: 'User not found',
} as const;
/******************************************************************************
Functions
******************************************************************************/
/**
* Get all users.
*/
function getAll(): Promise<IUser[]> {
return UserRepo.getAll();
}
/**
* Add one user.
*/
function addOne(user: IUser): Promise<void> {
return UserRepo.add(user);
}
/**
* Update one user.
*/
async function updateOne(user: IUser): Promise<void> {
const persists = await UserRepo.persists(user.id);
if (!persists) {
throw new RouteError(HttpStatusCodes.NOT_FOUND, Errors.USER_NOT_FOUND);
}
return UserRepo.update(user);
}
/**
* Delete a user by their id.
*/
async function deleteOne(id: number): Promise<void> {
const persists = await UserRepo.persists(id);
if (!persists) {
throw new RouteError(HttpStatusCodes.NOT_FOUND, Errors.USER_NOT_FOUND);
}
return UserRepo.delete(id);
}
/******************************************************************************
Export default
******************************************************************************/
export default {
Errors,
getAll,
addOne,
updateOne,
delete: deleteOne,
} as const;