"""
Pydantic schemas for TOAR database

"""

from typing import List

from pydantic import BaseModel, validator, Field
import datetime as dt
from .models import DF_enum

class DataBase(BaseModel):
    datetime: dt.datetime = Field(..., description="date and time of observation")
    value: float = Field(..., description="variable value at datetime")
    flags: str = Field(..., description="flags")
    timeseries_id: int = Field(..., description="ID of timeseries")

    @validator('flags')
    def check_flags(cls, v):
        return tuple(filter(lambda x: x.value == int(v), DF_enum))[0].string

class DataCreate(DataBase):
    pass

    @validator('flags')
    def check_flags(cls, v):
        if tuple(filter(lambda x: x.string == v, DF_enum)):
            return v
        else:
            raise ValueError(f"data flag not known: {v}")


class Data(DataBase):

    class Config:
        orm_mode = True