1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # -*- coding: utf-8 -*-
- from typing import List
- from fastapi import APIRouter, Depends, Query, HTTPException
- from sqlalchemy.orm import Session
- from app.controllers.equipment.fcu.q_learning import QLearningCommandBuilder
- from app.crud.space.weight import get_weight_by_space, get_weights_by_vav, create_weight, update_weight
- from app.api.dependencies.db import get_db
- from app.models.domain.space import SpaceControlResponse
- from app.schemas.sapce_weight import SpaceWeight, SpaceWeightCreate, SpaceWeightUpdate
- from app.services.transfer import Season
- router = APIRouter()
- @router.get('/control', response_model=SpaceControlResponse)
- async def get_space_command(
- project_id: str = Query(..., max_length=50, regex='^Pj', alias='projectId'),
- space_id: str = Query(..., max_length=50, regex='^Sp', alias='roomId'),
- timestamp: str = Query(None, min_length=14, max_length=14, alias='time'),
- method: int = Query(3),
- ):
- response = {
- 'projectId': project_id,
- 'roomId': space_id,
- 'flag': 1,
- 'time': timestamp,
- 'method': method,
- }
- return response
- @router.get('/test')
- async def get_test_result(current: float, pre: float, target: float):
- builder = QLearningCommandBuilder(Season('Cooling'))
- command = await builder.get_command(current, pre, target)
- return command
- @router.post('/weight', response_model=SpaceWeight)
- async def create_space_weight(weight: SpaceWeightCreate, db: Session = Depends(get_db)):
- return create_weight(db=db, weight=weight)
- @router.get('/weight/{space_id}', response_model=SpaceWeight)
- async def read_weight(space_id: str, db: Session = Depends(get_db)):
- db_weight = get_weight_by_space(db, space_id=space_id)
- if db_weight is None:
- raise HTTPException(status_code=404, detail='Space weight not found')
- return db_weight
- @router.get('/weight/vav/{vav_id}', response_model=List[SpaceWeight])
- async def read_weight_by_vav(vav_id: str, db: Session = Depends(get_db)):
- db_weights = get_weights_by_vav(db, vav_id=vav_id)
- return db_weights
- @router.patch('/weight/{space_id}', response_model=SpaceWeight)
- async def update_weight_by_space(space_id: str, weight_in: SpaceWeightUpdate, db: Session = Depends(get_db)):
- weight = get_weight_by_space(db, space_id=space_id)
- if not weight:
- raise HTTPException(
- status_code=404,
- detail='The weight with this space does not in the system'
- )
- weight = update_weight(db, db_weight=weight, weight_in=weight_in)
- return weight
|