Browse Source

feat: GraphQL mutations for User + Group

pull/621/head
NGPixel 7 years ago
parent
commit
7e1cb3d171
5 changed files with 58 additions and 18 deletions
  1. 13
      server/modules/graphql.js
  2. 13
      server/schemas/resolvers-group.js
  3. 13
      server/schemas/resolvers-user.js
  4. 35
      server/schemas/types.graphql
  5. 2
      tools/fuse.js

13
server/modules/graphql.js

@ -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,

13
server/schemas/resolvers-group.js

@ -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 })
}
},
Mutation: {
createGroup(obj, args) {
return wiki.db.Group.create(args)
}
},
Type: {
Group: {
users(grp) {
return grp.getUsers()
}

13
server/schemas/resolvers-user.js

@ -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 })
}
},
Mutation: {
createUser(obj, args) {
return wiki.db.User.create(args)
}
},
Type: {
User: {
groups(usr) {
return usr.getGroups()
}

35
server/schemas/types.graphql

@ -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
}

2
tools/fuse.js

@ -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…
Cancel
Save