Remove edges from rooms query

This commit is contained in:
Ramon Wenger 2022-01-26 22:34:02 +01:00
parent e0c95ad9ce
commit 6ce00694d7
10 changed files with 60 additions and 72 deletions

View File

@ -13,24 +13,18 @@ describe('Room Team Management - Read only', () => {
}, },
}, },
RoomsQuery: { RoomsQuery: {
rooms: { rooms: [{
edges: [ id: '',
{ slug: '',
node: { title: 'some room',
id: '', entryCount: 3,
slug: '', appearance: 'red',
title: 'some room', description: 'some description',
entryCount: 3, schoolClass: {
appearance: 'red', id: SELECTED_CLASS_ID,
description: 'some description', name: 'bla',
schoolClass: { },
id: SELECTED_CLASS_ID, }],
name: 'bla',
},
},
},
],
},
}, },
}); });

View File

@ -156,9 +156,7 @@ describe('The Room Page', () => {
MeQuery, MeQuery,
RoomsQuery() { RoomsQuery() {
return { return {
rooms: { rooms
edges: rooms.map(room => ({node: room})),
},
}; };
}, },
RoomEntriesQuery: { RoomEntriesQuery: {

View File

@ -4,17 +4,11 @@ describe('The Rooms Page', () => {
const getOperations = (isTeacher) => ({ const getOperations = (isTeacher) => ({
MeQuery: getMinimalMe({isTeacher}), MeQuery: getMinimalMe({isTeacher}),
RoomsQuery: { RoomsQuery: {
rooms: { rooms: [{
edges: [ schoolClass: {
{ id: btoa('SchoolClassNode:selectedClassId'),
node: { },
schoolClass: { }],
id: btoa('SchoolClassNode:selectedClassId'),
},
},
},
],
},
}, },
}); });
@ -23,9 +17,7 @@ describe('The Rooms Page', () => {
return { return {
...operations, ...operations,
RoomsQuery: { RoomsQuery: {
rooms: { rooms: [],
edges: [],
},
}, },
}; };
}; };
@ -105,9 +97,7 @@ describe('The Rooms Page', () => {
MeQuery, MeQuery,
RoomsQuery() { RoomsQuery() {
return { return {
rooms: { rooms
edges: rooms.map(room => ({node: room})),
},
}; };
}, },
AddRoom({input: {room: {title, appearance, description}}}) { AddRoom({input: {room: {title, appearance, description}}}) {

View File

@ -59,9 +59,16 @@
}, },
update: (store, {data: {deleteRoom: {success}}}) => { update: (store, {data: {deleteRoom: {success}}}) => {
if (success) { if (success) {
const data = store.readQuery({query: ROOMS_QUERY}); const {rooms} = store.readQuery({query: ROOMS_QUERY});
if (data) { if (rooms) {
data.rooms.edges.splice(data.rooms.edges.findIndex(edge => edge.node.id === this.id), 1); const index = rooms.findIndex(edge => edge.node.id === this.id);
const slicedRooms = [
rooms.slice(0, index),
rooms.slice(index+1)
];
const data = {
rooms: slicedRooms
};
store.writeQuery({query: ROOMS_QUERY, data}); store.writeQuery({query: ROOMS_QUERY, data});
} }
} }

View File

@ -53,12 +53,25 @@
try { try {
const query = ROOM_ENTRIES_QUERY; const query = ROOM_ENTRIES_QUERY;
const variables = {slug: this.room.slug}; const variables = {slug: this.room.slug};
const data = store.readQuery({query, variables}); const {room} = store.readQuery({query, variables});
if (data.room && data.room.roomEntries) { if (room && room.roomEntries) {
data.room.roomEntries.edges.unshift({ const newEdge ={
node: roomEntry, node: roomEntry,
__typename: 'RoomEntryNode' __typename: 'RoomEntryNodeEdge'
}); };
const edges = [
newEdge,
...room.roomEntries.edges
];
const data = {
room: {
...room,
roomEntries: {
...room.roomEntries,
edges
}
}
};
store.writeQuery({query, variables, data}); store.writeQuery({query, variables, data});
} }
} catch (e) { } catch (e) {

View File

@ -1,10 +1,6 @@
#import "../fragments/roomParts.gql" #import "../fragments/roomParts.gql"
query RoomsQuery { query RoomsQuery {
rooms { rooms {
edges { ...RoomParts
node {
...RoomParts
}
}
} }
} }

View File

@ -40,12 +40,15 @@
}, },
update: (store, {data: {addRoom: {room}}}) => { update: (store, {data: {addRoom: {room}}}) => {
try { try {
const data = store.readQuery({query: ROOMS_QUERY}); const {rooms} = store.readQuery({query: ROOMS_QUERY});
if (data.rooms) { if (rooms) {
data.rooms.edges.push({ const expandedRooms = [
node: room, ...rooms,
__typename: 'RoomNodeEdge' room
}); ];
const data = {
rooms: expandedRooms
};
store.writeQuery({query: ROOMS_QUERY, data}); store.writeQuery({query: ROOMS_QUERY, data});
} }
} catch (e) { } catch (e) {

View File

@ -69,9 +69,6 @@
apollo: { apollo: {
rooms: { rooms: {
query: ROOMS_QUERY, query: ROOMS_QUERY,
update(data) {
return this.$getRidOfEdges(data).rooms;
},
pollInterval: 5000, pollInterval: 5000,
}, },
me: { me: {

View File

@ -67,7 +67,7 @@ class RoomsQuery(object):
room_entry = graphene.Field(RoomEntryNode, id=graphene.ID(), slug=graphene.String()) room_entry = graphene.Field(RoomEntryNode, id=graphene.ID(), slug=graphene.String())
room = graphene.Field(RoomNode, slug=graphene.String(), id=graphene.ID(), appearance=graphene.String()) room = graphene.Field(RoomNode, slug=graphene.String(), id=graphene.ID(), appearance=graphene.String())
rooms = DjangoFilterConnectionField(RoomNode) rooms = graphene.List(RoomNode)
all_room_entries = DjangoFilterConnectionField(RoomEntryNode) all_room_entries = DjangoFilterConnectionField(RoomEntryNode)
def resolve_rooms(self, info, **kwargs): def resolve_rooms(self, info, **kwargs):

View File

@ -474,7 +474,7 @@ type CustomQuery {
objectiveGroups(offset: Int, before: String, after: String, first: Int, last: Int, title: String, module_Slug: String): ObjectiveGroupNodeConnection objectiveGroups(offset: Int, before: String, after: String, first: Int, last: Int, title: String, module_Slug: String): ObjectiveGroupNodeConnection
roomEntry(id: ID, slug: String): RoomEntryNode roomEntry(id: ID, slug: String): RoomEntryNode
room(slug: String, id: ID, appearance: String): RoomNode room(slug: String, id: ID, appearance: String): RoomNode
rooms(offset: Int, before: String, after: String, first: Int, last: Int, slug: String, appearance: String): RoomNodeConnection rooms: [RoomNode]
allRoomEntries(offset: Int, before: String, after: String, first: Int, last: Int, slug: String): RoomEntryNodeConnection allRoomEntries(offset: Int, before: String, after: String, first: Int, last: Int, slug: String): RoomEntryNodeConnection
moduleRoom(slug: String, classId: ID): RoomNode moduleRoom(slug: String, classId: ID): RoomNode
me: PrivateUserNode me: PrivateUserNode
@ -933,16 +933,6 @@ type RoomNode implements Node {
entryCount: Int entryCount: Int
} }
type RoomNodeConnection {
pageInfo: PageInfo!
edges: [RoomNodeEdge]!
}
type RoomNodeEdge {
node: RoomNode
cursor: String!
}
input SchoolClassInput { input SchoolClassInput {
id: ID id: ID
name: String name: String