'use strict'; const knex = require('./knex'); function curateUser(user) { if (!user) { return null; } const ability = [...(user.role_abilities || []), ...(user.abilities || [])]; const curatedUser = { id: user.id, username: user.username, email: user.email, emailVerified: user.email_verified, identityVerified: user.identity_verified, ability, createdAt: user.created_at, }; return curatedUser; } async function fetchUser(userId) { const user = await knex('users') .select('users.*', 'users_roles.abilities as role_abilities') .where('id', userId) .orWhere('username', userId) .orWhere('email', userId) .leftJoin('users_roles', 'users_roles.role', 'users.role') .first(); return curateUser(user); } module.exports = { curateUser, fetchUser, };