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: {
rooms: {
edges: [
{
node: {
id: '',
slug: '',
title: 'some room',
entryCount: 3,
appearance: 'red',
description: 'some description',
schoolClass: {
id: SELECTED_CLASS_ID,
name: 'bla',
},
},
},
],
},
rooms: [{
id: '',
slug: '',
title: 'some room',
entryCount: 3,
appearance: 'red',
description: 'some description',
schoolClass: {
id: SELECTED_CLASS_ID,
name: 'bla',
},
}],
},
});

View File

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

View File

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

View File

@ -59,9 +59,16 @@
},
update: (store, {data: {deleteRoom: {success}}}) => {
if (success) {
const data = store.readQuery({query: ROOMS_QUERY});
if (data) {
data.rooms.edges.splice(data.rooms.edges.findIndex(edge => edge.node.id === this.id), 1);
const {rooms} = store.readQuery({query: ROOMS_QUERY});
if (rooms) {
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});
}
}

View File

@ -53,12 +53,25 @@
try {
const query = ROOM_ENTRIES_QUERY;
const variables = {slug: this.room.slug};
const data = store.readQuery({query, variables});
if (data.room && data.room.roomEntries) {
data.room.roomEntries.edges.unshift({
const {room} = store.readQuery({query, variables});
if (room && room.roomEntries) {
const newEdge ={
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});
}
} catch (e) {

View File

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

View File

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

View File

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

View File

@ -67,7 +67,7 @@ class RoomsQuery(object):
room_entry = graphene.Field(RoomEntryNode, id=graphene.ID(), slug=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)
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
roomEntry(id: ID, slug: String): RoomEntryNode
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
moduleRoom(slug: String, classId: ID): RoomNode
me: PrivateUserNode
@ -933,16 +933,6 @@ type RoomNode implements Node {
entryCount: Int
}
type RoomNodeConnection {
pageInfo: PageInfo!
edges: [RoomNodeEdge]!
}
type RoomNodeEdge {
node: RoomNode
cursor: String!
}
input SchoolClassInput {
id: ID
name: String