feat: GraphQL mutations for User + Group
This commit is contained in:
parent
e0b788501d
commit
7e1cb3d171
@ -5,20 +5,17 @@
|
||||
const gqlTools = require('graphql-tools')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const _ = require('lodash')
|
||||
|
||||
const typeDefs = fs.readFileSync(path.join(wiki.SERVERPATH, 'schemas/types.graphql'), 'utf8')
|
||||
|
||||
const GroupResolvers = require('../schemas/resolvers-group')
|
||||
const UserResolvers = require('../schemas/resolvers-user')
|
||||
|
||||
const resolvers = {
|
||||
Query: {
|
||||
groups: GroupResolvers.Query,
|
||||
users: UserResolvers.Query
|
||||
},
|
||||
Group: GroupResolvers.Type,
|
||||
User: UserResolvers.Type
|
||||
}
|
||||
const resolvers = _.merge(
|
||||
GroupResolvers,
|
||||
UserResolvers
|
||||
)
|
||||
|
||||
const Schema = gqlTools.makeExecutableSchema({
|
||||
typeDefs,
|
||||
|
@ -3,10 +3,17 @@
|
||||
/* global wiki */
|
||||
|
||||
module.exports = {
|
||||
Query(obj, args, context, info) {
|
||||
return wiki.db.Group.findAll({ where: args })
|
||||
Query: {
|
||||
groups(obj, args, context, info) {
|
||||
return wiki.db.Group.findAll({ where: args })
|
||||
}
|
||||
},
|
||||
Type: {
|
||||
Mutation: {
|
||||
createGroup(obj, args) {
|
||||
return wiki.db.Group.create(args)
|
||||
}
|
||||
},
|
||||
Group: {
|
||||
users(grp) {
|
||||
return grp.getUsers()
|
||||
}
|
||||
|
@ -3,10 +3,17 @@
|
||||
/* global wiki */
|
||||
|
||||
module.exports = {
|
||||
Query(obj, args, context, info) {
|
||||
return wiki.db.User.findAll({ where: args })
|
||||
Query: {
|
||||
users(obj, args, context, info) {
|
||||
return wiki.db.User.findAll({ where: args })
|
||||
}
|
||||
},
|
||||
Type: {
|
||||
Mutation: {
|
||||
createUser(obj, args) {
|
||||
return wiki.db.User.create(args)
|
||||
}
|
||||
},
|
||||
User: {
|
||||
groups(usr) {
|
||||
return usr.getGroups()
|
||||
}
|
||||
|
@ -102,6 +102,7 @@ type Setting implements Base {
|
||||
config: String!
|
||||
}
|
||||
|
||||
# Tags are attached to one or more documents
|
||||
type Tag implements Base {
|
||||
id: Int!
|
||||
createdOn: Date
|
||||
@ -109,20 +110,20 @@ type Tag implements Base {
|
||||
key: String!
|
||||
}
|
||||
|
||||
# A User
|
||||
type User implements Base {
|
||||
id: Int!
|
||||
createdOn: Date
|
||||
updatedOn: Date
|
||||
email: String!
|
||||
provider: String
|
||||
provider: String!
|
||||
providerId: String
|
||||
name: String
|
||||
role: UserRole!
|
||||
groups: [Group]
|
||||
}
|
||||
|
||||
# QUERY
|
||||
|
||||
# Query (Read)
|
||||
type Query {
|
||||
comments(id: Int): [Comment]
|
||||
documents(id: Int, path: String): [Document]
|
||||
@ -134,3 +135,31 @@ type Query {
|
||||
tags(key: String): [Tag]
|
||||
users(id: Int, email: String, provider: String, providerId: String, role: UserRole): [User]
|
||||
}
|
||||
|
||||
# Mutations (Create, Update, Delete)
|
||||
type Mutation {
|
||||
assignUserToGroup(
|
||||
userId: Int!
|
||||
groupId: Int!
|
||||
): Boolean
|
||||
createGroup(
|
||||
name: String!
|
||||
): Group
|
||||
createUser(
|
||||
email: String!
|
||||
name: String
|
||||
provider: String!
|
||||
providerId: String
|
||||
role: UserRole!
|
||||
): User
|
||||
deleteGroup(
|
||||
id: Int!
|
||||
): Boolean
|
||||
deleteUser(
|
||||
id: Int!
|
||||
): Boolean
|
||||
removeUserFromGroup(
|
||||
userId: Int!
|
||||
groupId: Int!
|
||||
): Boolean
|
||||
}
|
||||
|
@ -140,7 +140,7 @@ globalTasks.then(() => {
|
||||
nodemon({
|
||||
exec: (args.d) ? 'node server' : 'node wiki configure',
|
||||
ignore: ['assets/', 'client/', 'data/', 'repo/', 'tests/'],
|
||||
ext: 'js json',
|
||||
ext: 'js json graphql',
|
||||
watch: (args.d) ? ['server'] : ['server/configure.js'],
|
||||
env: { 'NODE_ENV': 'development' }
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user