Source code for tisserande.db.function_types

"""ORM models for function type tables (PythonFunction, MemberFunction, ShellFunction)."""

from pydantic import BaseModel
from sqlalchemy import ForeignKey, String, UniqueConstraint
from sqlalchemy.orm import Mapped, mapped_column

from .. import models
from .base import Base


[docs] class PythonFunctionTable(Base): __tablename__ = "python_function" __table_args__ = (UniqueConstraint("name", "module_", name="uq_python_function_name_module"),)
[docs] id_: Mapped[int] = mapped_column(primary_key=True)
[docs] name: Mapped[str] = mapped_column(String(255), index=True)
[docs] module_: Mapped[str] = mapped_column(String(512))
@classmethod
[docs] def pydantic_create_class(cls) -> type[BaseModel]: return models.PythonFunctionCreate
@classmethod
[docs] def pydantic_model_class(cls) -> type[BaseModel]: return models.PythonFunction
@classmethod
[docs] def class_string(cls) -> str: return cls.__tablename__
[docs] class MemberFunctionTable(Base): __tablename__ = "member_function"
[docs] id_: Mapped[int] = mapped_column(primary_key=True)
[docs] name: Mapped[str] = mapped_column(String(255), index=True)
[docs] class_id: Mapped[int] = mapped_column(ForeignKey("class.id_"), index=True)
@classmethod
[docs] def pydantic_create_class(cls) -> type[BaseModel]: return models.MemberFunctionCreate
@classmethod
[docs] def pydantic_model_class(cls) -> type[BaseModel]: return models.MemberFunction
@classmethod
[docs] def class_string(cls) -> str: return cls.__tablename__
[docs] class ShellFunctionTable(Base): __tablename__ = "shell_function"
[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.ShellFunctionCreate
@classmethod
[docs] def pydantic_model_class(cls) -> type[BaseModel]: return models.ShellFunction
@classmethod
[docs] def class_string(cls) -> str: return cls.__tablename__