@wmfs/tymly-cardscript-plugin
Version:
Plugin which handles interactions to do with Cardscript
55 lines (45 loc) • 1.34 kB
JavaScript
const shasum = require('shasum')
async function findTodos (userId, todoModel, rbacService, userInfoService) {
const resultsObj = await todoQuery(
{ userId: { equals: userId } },
todoModel
)
const roles = await userRoles(userId, rbacService)
if (roles.length) {
await todoQuery(
{ teamName: { equals: roles } },
todoModel,
resultsObj
)
} // if ...
const userEmail = await userInfoService.emailFromUserId(userId)
if (userEmail) {
await todoQuery(
{ userEmail: { equals: userEmail.toLowerCase() } },
todoModel,
resultsObj
)
}
// inject todoId into launches
for (const [id, obj] of Object.entries(resultsObj)) {
if (Array.isArray(obj.launches)) {
obj.launches.forEach(l => {
l.input && (l.input.todoId = id)
})
} // if ...
obj.shasum = shasum(JSON.stringify(obj))
} // for ...
return resultsObj
} // findTodos
async function todoQuery (filter, todoModel, resultsObj = {}) {
const toDos = await todoModel.find({
where: filter
})
toDos.forEach(r => { resultsObj[r.id] = r })
return resultsObj
} // findTodos
async function userRoles (userId, rbacService) {
const roles = await rbacService.listUserRoles(userId)
return roles.filter(r => r[0] !== '$') // strip built-in roles
}
module.exports = findTodos