kangda/app/api/v1/endpoints/events.py
2025-05-26 15:26:18 +08:00

105 lines
3.3 KiB
Python

from typing import List, Optional
from fastapi import APIRouter, Depends, HTTPException, Query, Body
from sqlalchemy.ext.asyncio import AsyncSession
from app.core.database import get_db
from app.crud.event import event
from app.schemas.event import EventList, EventDetail, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail
from app.util.httpResponse import BaseResponse
import datetime
router = APIRouter()
# @router.get("/events", response_model=List[EventList])
# async def get_events(
# db: AsyncSession = Depends(get_db),
# start_time: Optional[str] = None,
# end_time: Optional[str] = None,
# etypeName: Optional[str] = None,
# area: Optional[str] = None,
# skip: int = Query(0, ge=0),
# limit: int = Query(100, ge=1, le=1000)
# ):
# """
# 获取事件列表
# - 支持时间范围查询
# - 支持事件类型和区域筛选
# - 支持分页
# """
# query = EventQuery(
# start_time=start_time,
# end_time=end_time,
# etypeName=etypeName,
# area=area,
# skip=skip,
# limit=limit
# )
# events = await event.get_multi_with_query(db, query=query)
# return [EventList.model_validate(event) for event in events]
# 后台获取事件列表
# @router.post("/backstageEventlist", response_model=List[BackStageEvent])
@router.post("/backstageEventlist", response_model=BaseResponse[List[BackStageEvent]])
async def get_events_backstage(
db: AsyncSession = Depends(get_db),
query: BackStageEventDto = Body(...)
):
events = await event.get_multi_backstage_events(db, query=query)
return BaseResponse(code=200, msg="success", data=events)
# 后台获取事件详情
@router.get("/backstageEventDetail/{eventId}", response_model=BaseResponse[BackStageEventDetail])
async def get_event_detail(
eventId: str,
db: AsyncSession = Depends(get_db)
):
back = await event.get_event_detail(db=db, eventId=eventId)
return BaseResponse(code = 200, msg="success", data=back)
# @router.get("/events/{event_id}", response_model=EventDetail)
# async def get_event(
# event_id: str,
# db: AsyncSession = Depends(get_db)
# ):
# """
# 获取事件详情
# """
# event_obj = await event.get_by_id(db, event_id=event_id)
# if not event_obj:
# raise HTTPException(status_code=404, detail="事件不存在")
# return EventDetail.model_validate(event_obj)
# @router.put("/events/{event_id}", response_model=EventDetail)
# async def update_event(
# event_id: str,
# event_in: EventUpdate,
# db: AsyncSession = Depends(get_db)
# ):
# """
# 更新事件信息
# """
# event_obj = await event.update_event(
# db,
# event_id=event_id,
# obj_in=event_in
# )
# if not event_obj:
# raise HTTPException(status_code=404, detail="事件不存在")
# return EventDetail.model_validate(event_obj)
@router.delete("/events/{event_id}", response_model=BaseResponse[EventDetail])
async def delete_event(
event_id: str,
db: AsyncSession = Depends(get_db)
):
"""
删除事件
"""
event_obj = await event.delete_event(db, event_id=event_id)
if not event_obj:
return BaseResponse(code=404,msg="事件不存在")
return BaseResponse(code=200, msg="success", data=EventDetail.model_validate(event_obj))