def mutate(cls, root, context, **kwargs):
"""
Mutation logic is handled here
"""
# 'before_insert' hooks won't work with db.session.bulk_save_objects
# we need to find a way to get hooks to work with bulk_save_objects @todo
records = []
for data in kwargs.get('records', []):
actual = Contact.query.get(data['uid'])
if not actual:
raise GraphQLError('Invalid id (%s)' % data['id'])
c = Contact.get_object_from_graphql_input(data)
for column_name, _ in inspect(Contact).attrs.items():
if column_name == 'id':
continue
if column_name not in data:
continue
setattr(actual, column_name, getattr(c, column_name))
db.session.add(actual)
records.append(actual.id)
try:
db.session.commit()
return cls(ok=True, ids=records)
except Exception as e:
raise GraphQLError(e.args)
评论列表
文章目录