Skip to content

Commit 784e384

Browse files
committed
feat: added API and db function for get events for given year
1 parent 700f13f commit 784e384

2 files changed

Lines changed: 35 additions & 2 deletions

File tree

src/event/crud.py

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,29 @@
11
from collections.abc import Sequence
22

3-
import sqlalchemy
3+
from sqlalchemy import select, or_, and_, extract
44
from sqlalchemy.ext.asyncio import AsyncSession
55

66
from event.tables import EventDB
77

8+
from datetime import datetime, date
9+
810

911
async def get_all_events(
1012
db_session: AsyncSession
1113
) -> Sequence[EventDB]:
12-
events = (await db_session.scalars(sqlalchemy.select(EventDB))).all()
14+
events = (await db_session.scalars(select(EventDB))).all()
15+
return events
16+
17+
18+
async def get_events_for_this_year(
19+
db_session: AsyncSession,
20+
year: int,
21+
) -> Sequence[EventDB]:
22+
events = (await db_session.scalars(select(EventDB).where
23+
(
24+
or_(
25+
extract('year', EventDB.start_time) == year,
26+
extract('year', EventDB.end_time) == year
27+
)
28+
))).all()
1329
return events

src/event/urls.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
)
1212
from event.tables import EventDB
1313
from utils.shared_models import DetailModel, SuccessResponse
14+
from datetime import datetime, date
1415

1516
router = APIRouter(
1617
prefix="/event",
@@ -31,4 +32,20 @@ async def get_all_events(
3132
):
3233
events_list = await event.crud.get_all_events(db_session)
3334

35+
return events_list
36+
37+
38+
@router.get(
39+
"/{year}",
40+
description="Get events that start OR end in this year",
41+
response_model=list[EventPublic],
42+
# responses= {}
43+
operation_id="get_events_for_this_year"
44+
)
45+
async def get_events_for_this_year(
46+
db_session: database.DBSession,
47+
year: int,
48+
):
49+
events_list = await event.crud.get_events_for_this_year(db_session, year)
50+
3451
return events_list

0 commit comments

Comments
 (0)