mirror of
https://github.com/jorgev259/soc_site-astro.git
synced 2025-06-29 07:57:41 +00:00
33 lines
961 B
JavaScript
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)
|