"""ORM models for data-related type tables (lookup tables with int PKs)."""
from pydantic import BaseModel
from sqlalchemy import Integer, JSON, String
from sqlalchemy.orm import Mapped, mapped_column
from .. import models
from .base import Base
[docs]
class DataFileTypeTable(Base):
__tablename__ = "data_file_type"
[docs]
id_: Mapped[int] = mapped_column(primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, unique=True)
@classmethod
[docs]
def pydantic_create_class(cls) -> type[BaseModel]:
return models.DataFileTypeCreate
@classmethod
[docs]
def pydantic_model_class(cls) -> type[BaseModel]:
return models.DataFileType
@classmethod
[docs]
def class_string(cls) -> str:
return cls.__tablename__
[docs]
class ConfigFileTypeTable(Base):
__tablename__ = "config_file_type"
[docs]
id_: Mapped[int] = mapped_column(primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, unique=True)
@classmethod
[docs]
def pydantic_create_class(cls) -> type[BaseModel]:
return models.ConfigFileTypeCreate
@classmethod
[docs]
def pydantic_model_class(cls) -> type[BaseModel]:
return models.ConfigFileType
@classmethod
[docs]
def class_string(cls) -> str:
return cls.__tablename__
[docs]
class ConfigDictTypeTable(Base):
__tablename__ = "config_dict_type"
[docs]
id_: Mapped[int] = mapped_column(primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, unique=True)
@classmethod
[docs]
def pydantic_create_class(cls) -> type[BaseModel]:
return models.ConfigDictTypeCreate
@classmethod
[docs]
def pydantic_model_class(cls) -> type[BaseModel]:
return models.ConfigDictType
@classmethod
[docs]
def class_string(cls) -> str:
return cls.__tablename__
[docs]
class ParameterTable(Base):
__tablename__ = "parameter"
[docs]
id_: Mapped[int] = mapped_column(primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, unique=True)
@classmethod
[docs]
def pydantic_create_class(cls) -> type[BaseModel]:
return models.ParameterCreate
@classmethod
[docs]
def pydantic_model_class(cls) -> type[BaseModel]:
return models.Parameter
@classmethod
[docs]
def class_string(cls) -> str:
return cls.__tablename__
[docs]
class ArrayTable(Base):
__tablename__ = "array"
[docs]
id_: Mapped[int] = mapped_column(primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, unique=True)
[docs]
n_dim: Mapped[int] = mapped_column(Integer)
[docs]
shape: Mapped[list[int]] = mapped_column(JSON)
@classmethod
[docs]
def pydantic_create_class(cls) -> type[BaseModel]:
return models.ArrayCreate
@classmethod
[docs]
def pydantic_model_class(cls) -> type[BaseModel]:
return models.Array
@classmethod
[docs]
def class_string(cls) -> str:
return cls.__tablename__
[docs]
class ClassTable(Base):
__tablename__ = "class"
[docs]
id_: Mapped[int] = mapped_column(primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, unique=True)
[docs]
module_: Mapped[str] = mapped_column(String(512))
@classmethod
[docs]
def pydantic_create_class(cls) -> type[BaseModel]:
return models.ClassCreate
@classmethod
[docs]
def pydantic_model_class(cls) -> type[BaseModel]:
return models.Class
@classmethod
[docs]
def class_string(cls) -> str:
return cls.__tablename__