# -*- coding: utf-8 -*- """ Pydantic schemas for TOAR database """ from typing import List from pydantic import BaseModel, Json import datetime as dt # ======== Timeseries ========= class TimeseriesBase(BaseModel): id: int = None label: str order: int access_rights: int sampling_frequency: int aggregation: int data_start_date: dt.datetime data_end_date: dt.datetime measurement_method: str sampling_height: float date_added: dt.datetime date_modified: dt.datetime station_id: int variable_id: int additional_metadata: Json class TimeseriesCreate(TimeseriesBase): pass class Timeseries(TimeseriesBase): id: int class Config: orm_mode = True # ======== TimeseriesRole ========= class TimeseriesRoleBase(BaseModel): id: int = None role: int status: int person_id: int timeseries_id: int class TimeseriesRoleCreate(TimeseriesRoleBase): pass class TimeseriesRole(TimeseriesRoleBase): id: int class Config: orm_mode = True # ======== TimeseriesAnnotation ========= class TimeseriesAnnotationBase(BaseModel): id: int = None kind: int text: str date_added: dt.datetime approved: bool contributor_id: int timeseries_id: int class TimeseriesAnnotationCreate(TimeseriesAnnotationBase): pass class TimeseriesAnnotation(TimeseriesAnnotationBase): id: int class Config: orm_mode = True # ======== TimeseriesProgramme ========= class TimeseriesProgrammeBase(BaseModel): id: int = None name: str longname: str homepage: str description: str class TimeseriesProgrammeCreate(TimeseriesProgrammeBase): pass class TimeseriesProgramme(TimeseriesProgrammeBase): id: int class Config: orm_mode = True