修改查询语句

This commit is contained in:
haotian 2025-05-26 15:26:18 +08:00
parent 7fb9cf2aa4
commit 0aef0ce193
2 changed files with 71 additions and 61 deletions

View File

@ -10,32 +10,32 @@ 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.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])
@ -60,36 +60,36 @@ async def get_event_detail(
@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.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.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(

View File

@ -60,20 +60,30 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
conditions.append(Temperature.createTime >= query.start_time)
if query.end_time is not None:
conditions.append(Temperature.createTime <= query.end_time)
stmt = (select(Event.eventId, Event.number, Event.name, Image.imageUrl, Image.localPath, Temperature.temperature, Temperature.confidence, Temperature.createTime, Temperature.status)
.select_from(Event)
.outerjoin(Image, Event.eventId==Image.eventId)
.outerjoin(Temperature, Image.imageId == Temperature.imageId)
.select_from(Temperature)
.outerjoin(Event, Event.eventId==Temperature.eventId)
.outerjoin(Image, Image.imageId == Temperature.imageId)
.where(*conditions)
.order_by(Temperature.createTime.desc())
.offset(query.skip)
.limit(query.limit))
result = await db.execute(stmt)
results = await db.execute(stmt)
result = result.mappings().all()
results = results.mappings().all()
back = list()
for result in results:
# if result["temperature"] is not None:
back.append(BackStageEvent(**result))
return back
return [BackStageEvent(**row) for row in result]