1- from fastapi import APIRouter , Body , HTTPException , Request , status
2- from fastapi .responses import HTMLResponse
3- from fastapi .templating import Jinja2Templates
1+ from urllib import response
2+ from beanie import PydanticObjectId
3+ from fastapi import APIRouter , HTTPException , status
4+ from database .database import Database
45
5- from models .events import Event
6+ from models .events import Event , EventUpdate
67from typing import List
78
89event_router = APIRouter (
910 tags = ["Events" ]
1011)
1112
12- templates = Jinja2Templates ( directory = "templates/" )
13+ event_database = Database ( Event )
1314
14- events = []
15+ @event_router .get ("/" , response_model = List [Event ])
16+ async def retrieve_all_events ():
17+ events = await event_database .get_all ()
18+ return events
1519
1620
17- @event_router .get ("/" , response_class = HTMLResponse )
18- async def retrieve_all_events (request : Request ):
19- return templates .TemplateResponse (
20- "event.html" ,
21- {
22- "request" : request ,
23- "events" : events
24- }
25- )
26-
27-
28- @event_router .get ("/{id}" , response_class = HTMLResponse )
29- async def retrieve_event (id : int , request : Request ):
30- for event in events :
31- if event .id == id :
32- return templates .TemplateResponse (
33- "event.html" ,
34- {
35- "request" : request ,
36- "event" : event
37- }
38- )
39-
40- raise HTTPException (
41- status_code = status .HTTP_404_NOT_FOUND ,
42- detail = "Event with supplied ID does not exist"
43- )
21+ @event_router .get ("/{id}" , response_model = Event )
22+ async def retrieve_event (id : PydanticObjectId ):
23+ event = await event_database .get (id )
24+ if not event :
25+ raise HTTPException (
26+ status_code = status .HTTP_404_NOT_FOUND ,
27+ detail = "Event with supplied ID does not exist"
28+ )
29+ return event
4430
4531
4632@event_router .post ("/new" )
47- async def create_event (body : Event = Body (...) ):
48- events . append (body )
33+ async def create_event (body : Event ):
34+ await event_database . save (body )
4935 return {
5036 "message" : "Event created successfully"
5137 }
5238
39+ @event_router .put ("/{id}" , response_model = Event )
40+ async def update_event (id : PydanticObjectId , body : EventUpdate ):
41+ updated_event = await event_database .update (id , body )
42+ if not updated_event :
43+ raise HTTPException (
44+ status_code = status .HTTP_404_NOT_FOUND ,
45+ detail = "Event with supplied ID does not exist"
46+ )
47+ return updated_event
5348
54- @event_router .delete ("/{id}" )
55- async def delete_event (id : int ):
56- for event in events :
57- if event .id == id :
58- events .remove (event )
59- return {
60- "message" : "Event deleted successfully"
61- }
6249
63- raise HTTPException (
64- status_code = status .HTTP_404_NOT_FOUND ,
65- detail = "Event with supplied ID does not exist"
66- )
50+ @event_router .delete ("/{id}" )
51+ async def delete_event (id : PydanticObjectId ):
52+ event = await event_database .delete (id )
53+ if not event :
54+ raise HTTPException (
55+ status_code = status .HTTP_404_NOT_FOUND ,
56+ detail = "Event with supplied ID does not exist"
57+ )
58+ return {
59+ "message" : "Event deleted successfully."
60+ }
0 commit comments