1+ from typing import Any
2+ from uuid import UUID
3+
4+ from fastapi import APIRouter , Depends , HTTPException
5+ from sqlmodel import Session
6+
7+ from app import crud
8+ from app .api import deps
9+ from app .models import (
10+ Meeting ,
11+ MeetingCreate ,
12+ MeetingUpdate ,
13+ MeetingPublic ,
14+ MeetingsPublic ,
15+ )
16+
17+ router = APIRouter (prefix = "/meetings" , tags = ["meetings" ])
18+
19+
20+ @router .get ("" , response_model = MeetingsPublic )
21+ def read_meetings (
22+ * ,
23+ session : Session = Depends (deps .get_session ),
24+ skip : int = 0 ,
25+ limit : int = 100 ,
26+ ) -> Any :
27+ """
28+ Retrieve meetings.
29+ """
30+ meetings , total = crud .meeting .get_meetings (
31+ session = session , skip = skip , limit = limit
32+ )
33+ return MeetingsPublic (data = meetings , count = total )
34+
35+
36+ @router .post ("" , response_model = MeetingPublic )
37+ def create_meeting (
38+ * ,
39+ session : Session = Depends (deps .get_session ),
40+ meeting_in : MeetingCreate ,
41+ ) -> Any :
42+ """
43+ Create new meeting.
44+ """
45+ meeting = crud .meeting .create_meeting (session = session , meeting_in = meeting_in )
46+ return meeting
47+
48+
49+ @router .get ("/{meeting_id}" , response_model = MeetingPublic )
50+ def read_meeting (
51+ * ,
52+ session : Session = Depends (deps .get_session ),
53+ meeting_id : UUID ,
54+ ) -> Any :
55+ """
56+ Get meeting by ID.
57+ """
58+ meeting = crud .meeting .get_meeting (session = session , meeting_id = meeting_id )
59+ if not meeting :
60+ raise HTTPException (status_code = 404 , detail = "Meeting not found" )
61+ return meeting
62+
63+
64+ @router .put ("/{meeting_id}" , response_model = MeetingPublic )
65+ def update_meeting (
66+ * ,
67+ session : Session = Depends (deps .get_session ),
68+ meeting_id : UUID ,
69+ meeting_in : MeetingUpdate ,
70+ ) -> Any :
71+ """
72+ Update a meeting.
73+ """
74+ meeting = crud .meeting .get_meeting (session = session , meeting_id = meeting_id )
75+ if not meeting :
76+ raise HTTPException (status_code = 404 , detail = "Meeting not found" )
77+ meeting = crud .meeting .update_meeting (
78+ session = session , db_obj = meeting , obj_in = meeting_in
79+ )
80+ return meeting
81+
82+
83+ @router .delete ("/{meeting_id}" , response_model = MeetingPublic )
84+ def delete_meeting (
85+ * ,
86+ session : Session = Depends (deps .get_session ),
87+ meeting_id : UUID ,
88+ ) -> Any :
89+ """
90+ Delete a meeting.
91+ """
92+ meeting = crud .meeting .delete_meeting (session = session , meeting_id = meeting_id )
93+ if not meeting :
94+ raise HTTPException (status_code = 404 , detail = "Meeting not found" )
95+ return meeting
0 commit comments