You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
geodata-catalog/backend/src/schemas.py

129 lines
3.0 KiB

from datetime import datetime, timedelta
from typing import Optional, Union
from pydantic import BaseModel
# Security
class Token(BaseModel):
access_token: str
token_type: str
class TokenData(BaseModel):
username: Union[str, None] = None
class User(BaseModel):
username: str
role: Union[str, None] = None
disabled: Union[bool, None] = None
class UserInDB(User):
hashed_password: str
# End Security
class HeaderBase(BaseModel):
database: str
spreadsheet: str
class HeaderCreate(HeaderBase):
pass
class Header(HeaderBase):
"""Заголовок описания набора геологических данных
по результатам экспедиционных исследований"""
class Config:
orm_mode = True
class ItemBase(BaseModel):
"""Описание набора геологических данных
по результатам экспедиционных исследований
"""
fadr: Optional[str] = None
internal_id: Optional[str] = None
x_coord: Optional[str] = None
y_coord: Optional[str] = None
gis_category: Optional[str] = None
category: Optional[str] = None
basin: Optional[str] = None
deposit: Optional[str] = None
well: Optional[str] = None
depth: Optional[str] = None
stratum: Optional[str] = None
owner: Optional[str] = None
org: Optional[str] = None
ownercontacts: Optional[str] = None
samplelist: Optional[str] = None
description: Optional[str] = None
form_dimentions: Optional[str] = None
datalist: Optional[str] = None
resolution: Optional[str] = None
date: Optional[Union[datetime, str]] = None
additional_info: Optional[str] = None
scanner: Optional[str] = None
comment: Optional[str] = None
class ItemCreate(ItemBase):
pass
class Item(ItemBase):
id: int
depth_min: Optional[float] = None
depth_max: Optional[float] = None
class Config:
orm_mode = True
class InsertStatus(BaseModel):
"""basic insertation status metrics"""
status: str
accepted: int
processed: int
process_time: timedelta
class DetailedSearchQuery(BaseModel):
"""detailed search query format"""
main_query: Optional[str] = None
fadr: Optional[str] = None
internal_id: Optional[str] = None
x_coord: Optional[str] = None
y_coord: Optional[str] = None
gis_category: Optional[str] = None
category: Optional[str] = None
basin: Optional[str] = None
deposit: Optional[str] = None
well: Optional[str] = None
depth: Optional[str] = None
stratum: Optional[str] = None
owner: Optional[str] = None
org: Optional[str] = None
ownercontacts: Optional[str] = None
samplelist: Optional[str] = None
description: Optional[str] = None
form_dimentions: Optional[str] = None
datalist: Optional[str] = None
resolution: Optional[str] = None
date: Optional[str] = None
additional_info: Optional[str] = None
scanner: Optional[str] = None
comment: Optional[str] = None