soc_site-astro/src/graphql/resolvers/queries/user.js
2024-09-18 20:33:41 -06:00

33 lines
961 B
JavaScript

import { Op } from 'sequelize'
import { composeResolvers } from '@graphql-tools/resolvers-composition'
import info from 'next/constants/info.json'
import { hasRole } from 'server/utils/resolvers'
import { getUser } from 'next/utils/getSession'
const { permissions } = info
const resolversComposition = { 'Query.users': hasRole('MANAGE_USER') }
const resolvers = {
Query: {
me: (parent, args, { db }) => getUser(db),
permissions: () => permissions,
roles: (parent, args, { db }) => db.models.role.findAll(),
users: (parent, args, { db }) => {
const search = args.search.trim()
if (search.length < 3) return []
return db.models.user.findAll({
where: {
[Op.or]: [
{ username: { [Op.like]: `%${search}%` } },
{ email: search }
]
}
})
},
user: async (_, { user }, { db }) => user
}
}
export default composeResolvers(resolvers, resolversComposition)