from fastapi import APIRouter, Depends
from sqlalchemy import select
from sqlalchemy.orm import Session

from app.schemas.auth_token import AccessToken
from app.database import get_db
from app.schemas.meter_value import MeterValue
from app.models.meter_value import MeterValue as DbMeterValue
from app.security.jwt_bearer import JWTBearer

router = APIRouter(
    prefix="/meter-values",
    tags=["MeterValue (v1)"]
)

@router.get(path="", response_model=list[MeterValue])
async def get_meter_values(
    skip: int = 0,
    limit: int = 20,
    db: Session = Depends(get_db),
    token: AccessToken = Depends(JWTBearer(required_roles=["administrator"])),
):
    stmt = select(DbMeterValue).order_by(DbMeterValue.timestamp).offset(skip).limit(limit)
    result = db.execute(stmt)
    return result.scalars().all()