feat(fastapi): adds get all presentations and delete endpoints
This commit is contained in:
parent
13397c27a3
commit
9e40a77ad1
1 changed files with 46 additions and 7 deletions
|
|
@ -141,7 +141,6 @@ async def stream_presentation(presentation_id: str):
|
|||
slide_content = await get_slide_content_from_type_and_outline(
|
||||
slide_layout, outline.slides[i]
|
||||
)
|
||||
print(slide_content)
|
||||
slide = SlideModel(
|
||||
presentation=presentation_id,
|
||||
layout=slide_layout.id,
|
||||
|
|
@ -184,11 +183,51 @@ async def stream_presentation(presentation_id: str):
|
|||
def get_presentation(id: str):
|
||||
with get_sql_session() as sql_session:
|
||||
presentation = sql_session.get(PresentationModel, id)
|
||||
if not presentation:
|
||||
raise HTTPException(404, "Presentation not found")
|
||||
slides = sql_session.exec(
|
||||
select(SlideModel)
|
||||
.where(SlideModel.presentation == id)
|
||||
.order_by(SlideModel.index)
|
||||
)
|
||||
return PresentationWithSlides(
|
||||
**presentation.model_dump(),
|
||||
slides=slides,
|
||||
)
|
||||
|
||||
|
||||
@PRESENTATION_ROUTER.delete("/", status_code=204)
|
||||
def delete_presentation(id: str):
|
||||
with get_sql_session() as sql_session:
|
||||
presentation = sql_session.get(PresentationModel, id)
|
||||
if not presentation:
|
||||
raise HTTPException(404, "Presentation not found")
|
||||
slides = sql_session.exec(
|
||||
select(SlideModel).where(SlideModel.presentation == id)
|
||||
)
|
||||
slides = sorted(slides, key=lambda x: x.index)
|
||||
return PresentationWithSlides(
|
||||
**presentation.model_dump(),
|
||||
slides=slides,
|
||||
)
|
||||
).all()
|
||||
for slide in slides:
|
||||
sql_session.delete(slide)
|
||||
sql_session.delete(presentation)
|
||||
sql_session.commit()
|
||||
|
||||
|
||||
@PRESENTATION_ROUTER.get("/all", response_model=List[PresentationWithSlides])
|
||||
def get_all_presentations():
|
||||
with get_sql_session() as sql_session:
|
||||
presentations_with_slides = []
|
||||
presentations = sql_session.exec(select(PresentationModel))
|
||||
for presentation in presentations:
|
||||
slides = sql_session.exec(
|
||||
select(SlideModel)
|
||||
.where(SlideModel.presentation == presentation.id)
|
||||
.where(SlideModel.index == 0)
|
||||
).all()
|
||||
if not slides:
|
||||
continue
|
||||
presentations_with_slides.append(
|
||||
PresentationWithSlides(
|
||||
**presentation.model_dump(),
|
||||
slides=slides,
|
||||
)
|
||||
)
|
||||
return presentations_with_slides
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue