Skip to content

Commit e26b8d4

Browse files
authored
Merge pull request #222 from cuappdev/master
edit and delete capacity fix
2 parents cfe2474 + 62c4ed6 commit e26b8d4

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

schema.graphql

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ type Capacity {
4040

4141
type CapacityReminder {
4242
id: ID!
43-
fcmToken: String!
4443
gyms: [CapacityReminderGym]!
4544
capacityThreshold: Int!
4645
daysOfWeek: [DayOfWeekEnum]!
@@ -227,7 +226,7 @@ type Mutation {
227226
createReport(createdAt: DateTime!, description: String!, gymId: Int!, issue: String!): CreateReport
228227
deleteUser(userId: Int!): User
229228
createCapacityReminder(capacityPercent: Int!, daysOfWeek: [String]!, fcmToken: String!, gyms: [String]!): CapacityReminder
230-
editCapacityReminder(capacityPercent: Int!, daysOfWeek: [String]!, gyms: [String]!, reminderId: Int!): CapacityReminder
229+
editCapacityReminder(daysOfWeek: [String]!, newCapacityThreshold: Int!, newGyms: [String]!, reminderId: Int!): CapacityReminder
231230
deleteCapacityReminder(reminderId: Int!): CapacityReminder
232231
addFriend(friendId: Int!, userId: Int!): Friendship
233232
acceptFriendRequest(friendshipId: Int!): Friendship
@@ -274,6 +273,8 @@ type Query {
274273
getUserStreak(id: Int!): JSONString
275274
getHourlyAverageCapacitiesByFacilityId(facilityId: Int): [HourlyAverageCapacity]
276275
getUserFriends(userId: Int!): [User]
276+
getCapacityReminderById(id: Int!): CapacityReminder
277+
getAllCapacityReminders: [CapacityReminder]
277278
}
278279

279280
type RefreshAccessToken {

src/schema.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@
2929
import json
3030
import os
3131
from firebase_admin import messaging
32+
import logging
33+
34+
35+
def resolve_enum_value(entry):
36+
"""Return the raw value for Enum objects while leaving plain strings untouched."""
37+
return getattr(entry, "value", entry)
3238

3339
# MARK: - Gym
3440

@@ -913,14 +919,25 @@ def mutate(self, info, reminder_id, new_gyms, days_of_week, new_capacity_thresho
913919

914920
# Unsubscribe from old reminders
915921
topics = [
916-
f"{gym}_{day}_{reminder.capacity_threshold}" for gym in reminder.gyms for day in reminder.days_of_week
922+
f"{resolve_enum_value(gym)}_{resolve_enum_value(day)}_{reminder.capacity_threshold}"
923+
for gym in reminder.gyms
924+
for day in reminder.days_of_week
917925
]
918926

919927
for topic in topics:
920928
try:
921929
response = messaging.unsubscribe_from_topic(reminder.fcm_token, topic)
930+
logging.info(
931+
"Unsubscribe %s from %s",
932+
reminder.fcm_token[:12],
933+
topic,
934+
)
935+
for error in response.errors:
936+
logging.warning(
937+
"Error unsubscribing %s from %s -> reason: %s", reminder.fcm_token[:12], topic, error.reason
938+
)
922939
if response.success_count == 0:
923-
raise Exception(response.errors[0].reason)
940+
raise Exception(response.errors[0].reason)
924941
except Exception as error:
925942
raise GraphQLError(f"Error subscribing to topic: {error}")
926943

@@ -930,8 +947,13 @@ def mutate(self, info, reminder_id, new_gyms, days_of_week, new_capacity_thresho
930947
for topic in topics:
931948
try:
932949
response = messaging.subscribe_to_topic(reminder.fcm_token, topic)
950+
logging.info(
951+
"Resubscribing %s to %s",
952+
reminder.fcm_token[:12],
953+
topic,
954+
)
933955
if response.success_count == 0:
934-
raise Exception(response.errors[0].reason)
956+
raise Exception(response.errors[0].reason)
935957
except Exception as error:
936958
raise GraphQLError(f"Error subscribing to topic: {error}")
937959

@@ -955,12 +977,19 @@ def mutate(self, info, reminder_id):
955977
raise GraphQLError("CapacityReminder not found.")
956978

957979
topics = [
958-
f"{gym}_{day}_{reminder.capacity_threshold}" for gym in reminder.gyms for day in reminder.days_of_week
980+
f"{resolve_enum_value(gym)}_{resolve_enum_value(day)}_{reminder.capacity_threshold}"
981+
for gym in reminder.gyms
982+
for day in reminder.days_of_week
959983
]
960984

961985
for topic in topics:
962986
try:
963987
response = messaging.unsubscribe_from_topic(reminder.fcm_token, topic)
988+
logging.info(
989+
"Unsubscribe %s from %s",
990+
reminder.fcm_token[:12],
991+
topic,
992+
)
964993
if response.success_count == 0:
965994
raise Exception(response.errors[0].reason)
966995
except Exception as error:

0 commit comments

Comments
 (0)