1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import bcrypt from 'bcrypt'
import { resolver, defaultArgs, defaultListArgs, attributeFields } from 'graphql-sequelize'
import {
graphql,
GraphQLSchema,
GraphQLObjectType,
GraphQLInputObjectType,
GraphQLString,
GraphQLInt,
GraphQLNonNull,
GraphQLList
} from 'graphql'
module.exports = (db, gqltypes, lnrpc) => {
const UserInputType = new GraphQLInputObjectType({
name: 'UserInput',
desc: 'UserInput',
fields: {
...attributeFields(db['User'], { exclude: ['id'] }),
}
})
return new GraphQLObjectType({
name: 'mutation',
fields: {
createUser: {
type: gqltypes['users'],
args: {
user: {
type: UserInputType
}
},
resolve: async (root, { user }) => {
let exists = await db['User'].count({ where: { username: user.username } })
if (exists) throw new Error('Username taken')
user.address = (await lnrpc.newAddress({ type: 1 }, lnrpc.meta)).address
user.password = await bcrypt.hash(user.password, 1)
user.balance = 0
return db['User'].create(user)
}
},
}
})
}
|