Updated calendar to have CRUD functionality (mostly).
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,9 +4,10 @@ from sqlalchemy.orm import Session
|
||||
from datetime import datetime
|
||||
from modules.auth.dependencies import get_current_user
|
||||
from core.database import get_db
|
||||
from core.exceptions import not_found_exception
|
||||
from modules.auth.models import User
|
||||
from modules.calendar.schemas import CalendarEventCreate, CalendarEventResponse
|
||||
from modules.calendar.service import create_calendar_event, get_calendar_events, update_calendar_event, delete_calendar_event
|
||||
from modules.calendar.schemas import CalendarEventCreate, CalendarEventUpdate, CalendarEventResponse
|
||||
from modules.calendar.service import create_calendar_event, get_calendar_event_by_id, get_calendar_events, update_calendar_event, delete_calendar_event
|
||||
|
||||
router = APIRouter(prefix="/calendar", tags=["calendar"])
|
||||
|
||||
@@ -29,10 +30,21 @@ def get_events(
|
||||
end = None if end == "" else end
|
||||
return get_calendar_events(db, user.id, start, end)
|
||||
|
||||
@router.put("/events/{event_id}", response_model=CalendarEventResponse)
|
||||
@router.get("/events/{event_id}", response_model=CalendarEventResponse)
|
||||
def get_event_by_id(
|
||||
event_id: int,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
event = get_calendar_event_by_id(db, user.id, event_id)
|
||||
if not event:
|
||||
raise not_found_exception()
|
||||
return event
|
||||
|
||||
@router.patch("/events/{event_id}", response_model=CalendarEventResponse)
|
||||
def update_event(
|
||||
event_id: int,
|
||||
event: CalendarEventCreate,
|
||||
event: CalendarEventUpdate,
|
||||
user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
|
||||
@@ -9,6 +9,13 @@ class CalendarEventCreate(BaseModel):
|
||||
end: datetime | None = None
|
||||
location: str | None = None
|
||||
|
||||
class CalendarEventUpdate(BaseModel):
|
||||
title: str | None = None
|
||||
description: str | None = None
|
||||
start: datetime | None = None
|
||||
end: datetime | None = None
|
||||
location: str | None = None
|
||||
|
||||
class CalendarEventResponse(CalendarEventCreate):
|
||||
id: int
|
||||
user_id: int
|
||||
|
||||
@@ -21,6 +21,15 @@ def get_calendar_events(db: Session, user_id: int, start: datetime, end: datetim
|
||||
query = query.filter(CalendarEvent.end_time <= end)
|
||||
return query.all()
|
||||
|
||||
def get_calendar_event_by_id(db: Session, user_id: int, event_id: int):
|
||||
event = db.query(CalendarEvent).filter(
|
||||
CalendarEvent.id == event_id,
|
||||
CalendarEvent.user_id == user_id
|
||||
).first()
|
||||
if not event:
|
||||
raise not_found_exception()
|
||||
return event
|
||||
|
||||
def update_calendar_event(db: Session, user_id: int, event_id: int, event_data):
|
||||
event = db.query(CalendarEvent).filter(
|
||||
CalendarEvent.id == event_id,
|
||||
|
||||
Reference in New Issue
Block a user