"""
TCKDB backend app schemas Lennard-Jones (LJ) module
"""
from typing import Dict, Optional, Tuple
from pydantic import BaseModel, Field, validator
[docs]class LJBase(BaseModel):
"""
A LJBase class (shared properties)
"""
sigma: Tuple[float, str] = Field(..., title="The L-J sigma parameter value-units tuple, e.g., (4.467, 'angstroms')")
epsilon: Tuple[float, str] = Field(..., title="The L-J epsilon parameter value-units tuple, e.g., (387.557, 'K')")
reviewer_flags: Optional[Dict[str, str]] = Field(None, title='Reviewer flags')
class Config:
extra = "forbid"
[docs] @validator('reviewer_flags', always=True)
def check_reviewer_flags(cls, value):
"""LJ.reviewer_flags validator"""
return value or dict()
[docs]class LJCreate(LJBase):
"""Create an LJ item: Properties to receive on item creation"""
sigma: Tuple[float, str]
epsilon: Tuple[float, str]
reviewer_flags: Optional[Dict[str, str]] = None
[docs]class LJUpdate(LJBase):
"""Update an LJ item: Properties to receive on item update"""
sigma: Tuple[float, str]
epsilon: Tuple[float, str]
reviewer_flags: Optional[Dict[str, str]] = None
[docs]class LJInDBBase(LJBase):
"""Properties shared by models stored in DB"""
id: int
sigma: Tuple[float, str]
epsilon: Tuple[float, str]
reviewer_flags: Optional[Dict[str, str]] = None
class Config:
orm_mode = True
[docs]class LJ(LJInDBBase):
"""Properties to return to client"""
pass
[docs]class LJInDB(LJInDBBase):
"""Properties stored in DB"""
pass