UNPKG

express-generator-typescript

Version:

Generate new Express applications similar to express-generate which but sets it up to use TypeScript instead

131 lines (114 loc) 2.84 kB
import { IUser } from '@src/models/User'; import { getRandomInt } from '@src/util/misc'; import orm from './MockOrm'; /****************************************************************************** Functions ******************************************************************************/ /** * Get one user. */ async function getOne(email: string): Promise<IUser | null> { const db = await orm.openDb(); for (const user of db.users) { if (user.email === email) { return user; } } return null; } /** * See if a user with the given id exists. */ async function persists(id: number): Promise<boolean> { const db = await orm.openDb(); for (const user of db.users) { if (user.id === id) { return true; } } return false; } /** * Get all users. */ async function getAll(): Promise<IUser[]> { const db = await orm.openDb(); return db.users; } /** * Add one user. */ async function add(user: IUser): Promise<void> { const db = await orm.openDb(); user.id = getRandomInt(); db.users.push(user); return orm.saveDb(db); } /** * Update a user. */ async function update(user: IUser): Promise<void> { const db = await orm.openDb(); for (let i = 0; i < db.users.length; i++) { if (db.users[i].id === user.id) { const dbUser = db.users[i]; db.users[i] = { ...dbUser, name: user.name, email: user.email, }; return orm.saveDb(db); } } } /** * Delete one user. */ async function delete_(id: number): Promise<void> { const db = await orm.openDb(); for (let i = 0; i < db.users.length; i++) { if (db.users[i].id === id) { db.users.splice(i, 1); return orm.saveDb(db); } } } // **** Unit-Tests Only **** // /** * Delete every user record. */ async function deleteAllUsers(): Promise<void> { const db = await orm.openDb(); db.users = []; return orm.saveDb(db); } /** * Insert multiple users. Can't do multiple at once cause using a plain file * for nmow. */ async function insertMult( users: IUser[] | readonly IUser[], ): Promise<IUser[]> { const db = await orm.openDb(), usersF = [ ...users ]; for (const user of usersF) { user.id = getRandomInt(); user.created = new Date(); } db.users = [ ...db.users, ...users ]; await orm.saveDb(db); return usersF; } /****************************************************************************** Export default ******************************************************************************/ export default { getOne, persists, getAll, add, update, delete: delete_, deleteAllUsers, insertMult, } as const;