express-generator-typescript
Version:
Generate new Express applications similar to express-generate which but sets it up to use TypeScript instead
74 lines (60 loc) • 1.76 kB
text/typescript
import { RouteError } from '@src/common/route-errors';
import HttpStatusCodes from '@src/common/HttpStatusCodes';
import UserRepo from '@src/repos/UserRepo';
import { IUser } from '@src/models/User';
/******************************************************************************
Variables
******************************************************************************/
export const USER_NOT_FOUND_ERR = 'User not found';
/******************************************************************************
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,
USER_NOT_FOUND_ERR,
);
}
// Return user
return UserRepo.update(user);
}
/**
* Delete a user by their id.
*/
async function _delete(id: number): Promise<void> {
const persists = await UserRepo.persists(id);
if (!persists) {
throw new RouteError(
HttpStatusCodes.NOT_FOUND,
USER_NOT_FOUND_ERR,
);
}
// Delete user
return UserRepo.delete(id);
}
/******************************************************************************
Export default
******************************************************************************/
export default {
getAll,
addOne,
updateOne,
delete: _delete,
} as const;