'use strict' import { getUsersFromStorage, generateRandomId, saveUserToStorage } from './users/storageService' import { WrongInputError, NotFoundError, InternalError, AlreadyExists } from '../utils/customErrors' import { Request } from 'express' import { User } from './users/types' /** * Operations on /users */ export default { /**Returns all users in store */ async getUsers() { try { return await getUsersFromStorage() } catch (error) { throw new NotFoundError(error) } }, /**Creates a new user in the store. */ async postUser(req: Request) { if (req && req.body && req.body.user) { let user: User = req.body.user if (user && user.email && user.name && user.role) { user.source = 'manual' user.id = generateRandomId() || 'EMPTY_STRING' //check generateRandomId() for explanation try { return await saveUserToStorage(user) } catch (error) { if (error instanceof Error) { throw new InternalError(error.message) } else { throw new AlreadyExists(error) } } } else { throw new WrongInputError('email, name and/or role were not found in user body') } } else { throw new WrongInputError('request body doesnt have parameter user') } } }