diff --git a/app/routers/plants.py b/app/routers/plants.py index 02c1cd6..eb1569e 100644 --- a/app/routers/plants.py +++ b/app/routers/plants.py @@ -9,7 +9,7 @@ from supabase import Client from typing import List from app.core.database import get_db -from app.schemas.plant import PlantsListResponse, PlantWithLatestLog, SolarLogBase +from app.schemas.plant import PlantsListResponse, PlantWithLatestLog, SolarLogBase, PlantAlertUpdateRequest router = APIRouter( prefix="/plants", @@ -138,3 +138,40 @@ async def get_plant_detail( status_code=500, detail=f"데이터베이스 조회 중 오류가 발생했습니다: {str(e)}" ) + + +@router.patch("/{company_id}/{plant_id}/alerts") +async def update_plant_alerts( + company_id: int, + plant_id: str, + alert_update: PlantAlertUpdateRequest, + db: Client = Depends(get_db) +) -> dict: + """ + 특정 발전소의 알림 활성화 상태를 변경합니다. + """ + try: + response = db.table("plants") \ + .update({"alerts_enabled": alert_update.alerts_enabled}) \ + .eq("id", plant_id) \ + .eq("company_id", company_id) \ + .execute() + + if not response.data: + raise HTTPException( + status_code=404, + detail="발전소를 찾을 수 없거나 업데이트에 실패했습니다." + ) + + return { + "status": "success", + "message": "알림 설정이 변경되었습니다.", + "data": response.data[0] + } + except HTTPException: + raise + except Exception as e: + raise HTTPException( + status_code=500, + detail=f"알림 설정 변경 중 오류가 발생했습니다: {str(e)}" + ) diff --git a/app/schemas/plant.py b/app/schemas/plant.py index 43437f8..4343e75 100644 --- a/app/schemas/plant.py +++ b/app/schemas/plant.py @@ -17,8 +17,13 @@ class PlantBase(BaseModel): name: str capacity: Optional[float] = Field(None, description="발전 용량 (kW)") location: Optional[str] = Field(None, description="발전소 위치") + alerts_enabled: Optional[bool] = Field(True, description="이상 알림 활성화 여부") created_at: Optional[datetime] = None +class PlantAlertUpdateRequest(BaseModel): + alerts_enabled: bool + + class SolarLogBase(BaseModel): """발전 로그 기본 정보 스키마"""