Source code for tisserande.db.data_types

"""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__