Split up add and change mutations for rooms
This commit is contained in:
parent
66ad787779
commit
b37038f74d
|
|
@ -28,7 +28,7 @@
|
||||||
<script>
|
<script>
|
||||||
import RoomColors from '@/components/rooms/RoomColors';
|
import RoomColors from '@/components/rooms/RoomColors';
|
||||||
|
|
||||||
import ROOM_MUTATION from '@/graphql/gql/mutations/mutateRoom.gql';
|
import ADD_ROOM_MUTATION from '@/graphql/gql/mutations/addRoom.gql';
|
||||||
import ROOMS_QUERY from '@/graphql/gql/roomsQuery.gql';
|
import ROOMS_QUERY from '@/graphql/gql/roomsQuery.gql';
|
||||||
|
|
||||||
const defaultColor = 'blue';
|
const defaultColor = 'blue';
|
||||||
|
|
@ -56,20 +56,24 @@
|
||||||
},
|
},
|
||||||
mutateRoom(room) {
|
mutateRoom(room) {
|
||||||
this.$apollo.mutate({
|
this.$apollo.mutate({
|
||||||
mutation: ROOM_MUTATION,
|
mutation: ADD_ROOM_MUTATION,
|
||||||
variables: {
|
variables: {
|
||||||
input: {
|
input: {
|
||||||
room: room
|
room: room
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
update: (store, {data: {mutateRoom: {room}}}) => {
|
update: (store, {data: {addRoom: {room}}}) => {
|
||||||
const data = store.readQuery({query: ROOMS_QUERY});
|
try {
|
||||||
if (data.allRooms) {
|
const data = store.readQuery({query: ROOMS_QUERY});
|
||||||
data.allRooms.edges.push({
|
if (data.allRooms) {
|
||||||
node: room,
|
data.allRooms.edges.push({
|
||||||
__typename: 'RoomNode'
|
node: room,
|
||||||
});
|
__typename: 'RoomNode'
|
||||||
store.writeQuery({query: ROOMS_QUERY, data});
|
});
|
||||||
|
store.writeQuery({query: ROOMS_QUERY, data});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// Query did not exist in the cache, and apollo throws a generic Error. Do nothing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#import "../fragments/roomParts.gql"
|
#import "../fragments/roomParts.gql"
|
||||||
mutation MutateRoom($input: MutateRoomInput!){
|
mutation AddRoom($input: AddRoomInput!){
|
||||||
mutateRoom(input: $input) {
|
addRoom(input: $input) {
|
||||||
room {
|
room {
|
||||||
...RoomParts
|
...RoomParts
|
||||||
},
|
},
|
||||||
|
|
@ -3,8 +3,15 @@ from graphene import InputObjectType
|
||||||
|
|
||||||
|
|
||||||
class RoomInput(InputObjectType):
|
class RoomInput(InputObjectType):
|
||||||
id = graphene.ID()
|
|
||||||
title = graphene.String()
|
title = graphene.String()
|
||||||
description = graphene.String()
|
description = graphene.String()
|
||||||
user_group = graphene.ID()
|
user_group = graphene.ID()
|
||||||
appearance = graphene.String()
|
appearance = graphene.String()
|
||||||
|
|
||||||
|
|
||||||
|
class RoomAddInput(RoomInput):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class RoomChangeInput(RoomInput):
|
||||||
|
id = graphene.ID(required=True)
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,13 @@ import graphene
|
||||||
from graphene import relay
|
from graphene import relay
|
||||||
|
|
||||||
from api.utils import get_object
|
from api.utils import get_object
|
||||||
from rooms.inputs import RoomInput
|
from rooms.inputs import RoomChangeInput, RoomAddInput
|
||||||
from rooms.schema import RoomNode
|
from rooms.schema import RoomNode
|
||||||
from rooms.serializers import RoomSerializer
|
from rooms.serializers import RoomSerializer
|
||||||
from user.models import UserGroup
|
from user.models import UserGroup
|
||||||
|
|
||||||
|
|
||||||
class AddRoom(relay.ClientIDMutation):
|
class MutateRoom(relay.ClientIDMutation):
|
||||||
class Input:
|
|
||||||
room = graphene.Argument(RoomInput)
|
|
||||||
|
|
||||||
errors = graphene.List(graphene.String)
|
errors = graphene.List(graphene.String)
|
||||||
room = graphene.Field(RoomNode)
|
room = graphene.Field(RoomNode)
|
||||||
|
|
||||||
|
|
@ -28,6 +25,16 @@ class AddRoom(relay.ClientIDMutation):
|
||||||
return cls(room=None, errors=['{}: {}'.format(key, value) for key, value in serializer.errors.items()])
|
return cls(room=None, errors=['{}: {}'.format(key, value) for key, value in serializer.errors.items()])
|
||||||
|
|
||||||
|
|
||||||
|
class AddRoom(MutateRoom):
|
||||||
|
class Input:
|
||||||
|
room = graphene.Argument(RoomAddInput) # NB: can't be named AddRoomInput, otherwise graphene complains
|
||||||
|
|
||||||
|
|
||||||
|
class ChangeRoom(MutateRoom):
|
||||||
|
class Input:
|
||||||
|
room = graphene.Argument(RoomChangeInput) # NB: can't be named ChangeRoomInput, otherwise graphene complains
|
||||||
|
|
||||||
|
|
||||||
class RoomMutations:
|
class RoomMutations:
|
||||||
mutate_room = MutateRoom.Field()
|
change_room = ChangeRoom.Field()
|
||||||
add_room = AddRoom.Field()
|
add_room = AddRoom.Field()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue