import { makeLogger } from './helpers'; import { setupOrm, User } from './models'; const log = makeLogger('cli'); export async function createUser(login: string, isAdmin = false) { try { log.info(`Creating user with login ${login}: setting up database.`); await setupOrm(); log.info(`Database set up; creating user (admin: ${isAdmin})...`); // Let's avoid a dangerous migration to add a unique key on the login and just check if a // user already exists with that login. const existingUser = await User.findByLogin(login); if (existingUser) { throw new Error('A user already exists with that login!'); } const user = await User.create({ login, isAdmin }); const id = user.id; log.info(`User ${login} created with success! id=${id}`); return user.id; } catch (err) { throw new Error(`Couldn't create user ${login}: ${err.message} ${err.stack}`); } } export async function deleteUser(login: string) { try { log.info(`Deleting user with login ${login}: setting up database.`); await setupOrm(); log.info(`Database set up; deleting user...`); const user = await User.findByLogin(login); if (!user) { throw new Error('No user with this login'); } await User.destroy(user.id); log.info(`User ${login} deleted with success!`); } catch (err) { throw new Error(`Couldn't delete user ${login}: ${err.message} ${err.stack}`); } } export async function listUsers() { try { log.info('Listing users: setting up database.'); await setupOrm(); log.info(`Database set up; listing users...`); const users = await User.all(); log.info(`Found ${users.length} users.`); for (const user of users) { log.info(`- id=${user.id} login=${user.login} isAdmin=${user.isAdmin}`); } } catch (err) { throw new Error(`Couldn't list users: ${err.message} ${err.stack}`); } }