Skip to content

Commit f89c543

Browse files
authored
Merge pull request #43 from cuappdev/advanced-filters
Added find by date query to support advanced filters for frontend
2 parents f15c721 + 7cfaaf9 commit f89c543

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

src/queries/game_query.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from graphene import ObjectType, String, Field, List, Int
1+
from graphene import ObjectType, String, Field, List, Int, DateTime
22
from src.services.game_service import GameService
33
from src.types import GameType
44

@@ -27,6 +27,7 @@ class GameQuery(ObjectType):
2727
games_by_sport_gender = List(
2828
GameType, sport=String(required=True), gender=String(required=True)
2929
)
30+
games_by_date = List(GameType, startDate=DateTime(required=True), endDate=DateTime(required=True))
3031

3132
def resolve_games(self, info, limit=100, offset=0):
3233
"""
@@ -67,3 +68,9 @@ def resolve_games_by_sport_gender(self, info, sport, gender):
6768
Resolver for retrieving all games by its sport and gender.
6869
"""
6970
return GameService.get_games_by_sport_gender(sport, gender)
71+
72+
def resolve_games_by_date(self, info, startDate, endDate):
73+
"""
74+
Resolver for retrieving games by date.
75+
"""
76+
return GameService.get_games_by_date(startDate, endDate)

src/repositories/game_repository.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,27 @@ def find_games_by_sport_gender_after_date(sport, gender, after_date=None):
225225

226226
games = game_collection.find(query)
227227
return [Game.from_dict(game) for game in games]
228+
229+
@staticmethod
230+
def find_by_date(startDate, endDate):
231+
"""
232+
Retrieve all games from the 'game' collection in MongoDB for games
233+
between certain dates.
234+
"""
235+
game_collection = db["game"]
236+
237+
start_str = startDate.isoformat()
238+
endDate = endDate.isoformat()
239+
240+
query = {
241+
"utc_date": {
242+
"$gte": start_str,
243+
"$lte": endDate
244+
}
245+
}
246+
247+
games = game_collection.find(query)
248+
return [Game.from_dict(game) for game in games]
228249

229250
@staticmethod
230251
def delete_games_by_ids(game_ids):

src/services/game_service.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ def get_games_by_sport_gender(sport, gender):
101101
Retrieves all game by its sport and gender.
102102
"""
103103
return GameRepository.find_by_sport_gender(sport, gender)
104+
105+
@staticmethod
106+
def get_games_by_date(startDate, endDate):
107+
"""
108+
Retrieves all games between these two dates.
109+
"""
110+
return GameRepository.find_by_date(startDate, endDate)
104111

105112
@staticmethod
106113
def get_tournament_games_by_sport_gender(sport, gender, after_date=None):

0 commit comments

Comments
 (0)