修改查询判断条件和更新数据的数据条件
This commit is contained in:
parent
0aef0ce193
commit
a94d0c5191
@ -3,7 +3,7 @@ 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.schemas.event import EventList, EventDetail, EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto
|
||||
from app.util.httpResponse import BaseResponse
|
||||
|
||||
import datetime
|
||||
@ -73,23 +73,23 @@ async def get_event_detail(
|
||||
# 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=BaseResponse)
|
||||
async def update_event(
|
||||
event_id: str,
|
||||
event_in: EditTemperatureDto,
|
||||
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 BaseResponse(code=404, msg="事件不存在")
|
||||
return BaseResponse(code=200, msg="success")
|
||||
|
||||
@router.delete("/events/{event_id}", response_model=BaseResponse[EventDetail])
|
||||
async def delete_event(
|
||||
|
||||
@ -1,10 +1,12 @@
|
||||
from typing import List, Optional, Dict, Any
|
||||
from sqlalchemy import select, and_, or_
|
||||
from sqlalchemy import select, and_, or_, update
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import selectinload
|
||||
from app.crud.base import CRUDBase
|
||||
from app.models.models import Event, Image, Temperature
|
||||
from app.schemas.event import EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail
|
||||
from app.schemas.event import EventUpdate, EventQuery, BackStageEvent, BackStageEventDto, BackStageEventDetail, EditTemperatureDto
|
||||
|
||||
from pydantic import VERSION as PYDANTIC_VERSION
|
||||
|
||||
class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
|
||||
async def get_by_id(self, db: AsyncSession, *, event_id: str) -> Optional[Event]:
|
||||
@ -48,13 +50,13 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
|
||||
|
||||
conditions = []
|
||||
|
||||
if query.eventId is not None:
|
||||
if query.eventId is not None and len(query.eventId) > 0:
|
||||
conditions.append(Event.eventId==query.eventId)
|
||||
if query.number is not None:
|
||||
if query.number is not None and len(query.number) > 0:
|
||||
conditions.append(Event.number == query.number)
|
||||
if query.name is not None:
|
||||
if query.name is not None and len(query.name) > 0:
|
||||
conditions.append(Event.name == query.name)
|
||||
if query.status is not None:
|
||||
if query.status is not None and len(query.status) > 0:
|
||||
conditions.append(Temperature.status == query.status)
|
||||
if query.start_time is not None:
|
||||
conditions.append(Temperature.createTime >= query.start_time)
|
||||
@ -126,21 +128,49 @@ class CRUDEvent(CRUDBase[Event, EventUpdate, EventUpdate]):
|
||||
db: AsyncSession,
|
||||
*,
|
||||
event_id: str,
|
||||
obj_in: EventUpdate
|
||||
obj_in: EditTemperatureDto
|
||||
) -> Optional[Event]:
|
||||
"""更新事件信息"""
|
||||
event = await self.get_by_id(db, event_id=event_id)
|
||||
if not event:
|
||||
return None
|
||||
|
||||
dict_values = dict()
|
||||
|
||||
if PYDANTIC_VERSION.startswith("2."):
|
||||
field_names = list(EditTemperatureDto.model_fields.keys())
|
||||
else:
|
||||
field_names = list(EditTemperatureDto.__fields__.keys())
|
||||
|
||||
for key in field_names:
|
||||
|
||||
update_data = obj_in.model_dump()
|
||||
for field, value in update_data.items():
|
||||
setattr(event, field, value)
|
||||
value = getattr(obj_in, key)
|
||||
if value is not None:
|
||||
dict_values[key] = value
|
||||
|
||||
# if obj_in.status is not None:
|
||||
try:
|
||||
update_stmt = (
|
||||
update(Temperature).where(Temperature.eventId == event_id).values(**dict_values)
|
||||
)
|
||||
|
||||
# db.add(event)
|
||||
await db.commit()
|
||||
await db.refresh(event)
|
||||
return event
|
||||
await db.execute(update_stmt)
|
||||
await db.commit()
|
||||
|
||||
return True
|
||||
except:
|
||||
return False
|
||||
|
||||
|
||||
# event = await self.get_by_id(db, event_id=event_id)
|
||||
# if not event:
|
||||
# return None
|
||||
|
||||
# update_data = obj_in.model_dump()
|
||||
# for field, value in update_data.items():
|
||||
# setattr(event, field, value)
|
||||
|
||||
# # db.add(event)
|
||||
# await db.commit()
|
||||
# await db.refresh(event)
|
||||
# return event
|
||||
|
||||
async def delete_event(
|
||||
self,
|
||||
|
||||
@ -127,6 +127,11 @@ class BackStageEventDto(BaseModel):
|
||||
skip: int = 0
|
||||
limit: int = 100
|
||||
|
||||
class EditTemperatureDto(BaseModel):
|
||||
|
||||
status: Optional[str] = None
|
||||
temperature: Optional[str] = None
|
||||
|
||||
# 后台查看事件详情
|
||||
class BackStageEventDetail(BaseModel):
|
||||
eventId:str = None
|
||||
|
||||
Loading…
Reference in New Issue
Block a user