diff --git a/database/schema.py b/database/schema.py index eca2ecdea8ce2a9b4486c145dc2d1156ad7100c0..d0e2ba74fdeb0fdc37d2d7e4f9eeb3a058b68e30 100644 --- a/database/schema.py +++ b/database/schema.py @@ -12,6 +12,19 @@ class User(SQLAlchemyObjectType): exclude_fields = ("password") interfaces = (relay.Node, ) +class UserMutation(graphene.Mutation): + class Arguments: + username = graphene.String(required=True) + password = graphene.String(required=True) + email = graphene.String(required=True) + + user = graphene.Field(User) + + def mutate(self, info, username, password, email): + user = user_datastore.create_user(username=username, email=email, password=password) + user_datastore.commit() + return UserMutation(user=user) + class Application(SQLAlchemyObjectType): class Meta: model = ApplicationModel @@ -32,4 +45,8 @@ class Query(graphene.ObjectType): query = User.get_query(info) return query.filter(UserModel.username == username).first() -schema = graphene.Schema(query=Query) +class Mutation(graphene.ObjectType): + create_user = UserMutation.Field() + + +schema = graphene.Schema(query=Query, types=[User, Role, Application], mutation=Mutation)