Skip to content

Commit 700f13f

Browse files
committed
feat: created GET(/event) API endpoint
1 parent 108cd5b commit 700f13f

5 files changed

Lines changed: 65 additions & 16 deletions

File tree

src/event/crud.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from collections.abc import Sequence
2+
3+
import sqlalchemy
4+
from sqlalchemy.ext.asyncio import AsyncSession
5+
6+
from event.tables import EventDB
7+
8+
9+
async def get_all_events(
10+
db_session: AsyncSession
11+
) -> Sequence[EventDB]:
12+
events = (await db_session.scalars(sqlalchemy.select(EventDB))).all()
13+
return events

src/event/models.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,37 @@ class Event(BaseModel):
55
model_config = ConfigDict(from_attributes=True)
66
eid: int
77
name: str
8-
start_time: datetime.datetime()
9-
end_time: datetime.datetime()
8+
start_time: datetime.datetime
9+
end_time: datetime.datetime
1010
description: str | None = None
1111
repeat: str | None = None
12-
start_date: datetime.date() | None = None
13-
end_date: datetime.date() | None = None
12+
start_date: datetime.date | None = None
13+
end_date: datetime.date | None = None
1414

1515
class EventPublic(BaseModel):
1616
model_config = ConfigDict(from_attributes=True)
1717
name: str
18-
start_time: datetime.datetime()
19-
end_time: datetime.datetime()
18+
start_time: datetime.datetime
19+
end_time: datetime.datetime
2020
description: str | None = None
2121
repeat: str | None = None
22-
start_date: datetime.date() | None = None
23-
end_date: datetime.date() | None = None
22+
start_date: datetime.date | None = None
23+
end_date: datetime.date | None = None
2424

2525
class EventCreate(BaseModel):
2626
name: str
27-
start_time: datetime.datetime()
28-
end_time: datetime.datetime()
27+
start_time: datetime.datetime
28+
end_time: datetime.datetime
2929
description: str | None = None
3030
repeat: str | None = None
31-
start_date: datetime.date() | None = None
32-
end_date: datetime.date() | None = None
31+
start_date: datetime.date | None = None
32+
end_date: datetime.date | None = None
3333

3434
class EventUpdate(BaseModel):
3535
name: str | None = None
36-
start_time: datetime.datetime() | None = None
37-
end_time: datetime.datetime() | None = None
36+
start_time: datetime.datetime | None = None
37+
end_time: datetime.datetime | None = None
3838
description: str | None = None
3939
repeat: str | None = None
40-
start_date: datetime.date() | None = None
41-
end_date: datetime.date() | None = None
40+
start_date: datetime.date | None = None
41+
end_date: datetime.date | None = None

src/event/url.py

Whitespace-only changes.

src/event/urls.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from fastapi import APIRouter, Depends, HTTPException, status
2+
from fastapi.responses import JSONResponse
3+
4+
import database
5+
import event.crud
6+
from event.models import (
7+
Event,
8+
EventPublic,
9+
EventCreate,
10+
EventUpdate
11+
)
12+
from event.tables import EventDB
13+
from utils.shared_models import DetailModel, SuccessResponse
14+
15+
router = APIRouter(
16+
prefix="/event",
17+
tags=["event"],
18+
)
19+
20+
@router.get(
21+
"",
22+
description="Get all events",
23+
response_model=list[EventPublic],
24+
# responses={},
25+
operation_id="get_all_events",
26+
# probably want it to be public so no dependecies?
27+
# dependecies=[Depends()]
28+
)
29+
async def get_all_events(
30+
db_session: database.DBSession,
31+
):
32+
events_list = await event.crud.get_all_events(db_session)
33+
34+
return events_list

src/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import nominees.urls
1414
import officers.urls
1515
import permission.urls
16+
import event.urls
1617
from constants import IS_PROD
1718

1819
logging.basicConfig(level=logging.DEBUG)
@@ -58,6 +59,7 @@
5859
app.include_router(nominees.urls.router)
5960
app.include_router(officers.urls.router)
6061
app.include_router(permission.urls.router)
62+
app.include_router(event.urls.router)
6163

6264

6365
@app.get("/")

0 commit comments

Comments
 (0)