Source code for tisserande.db.edges

"""ORM model for the Edge table (directed links between nodes in the provenance DAG)."""

import uuid

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

from .. import models
from .base import Base


[docs] class EdgeTable(Base): __tablename__ = "edge"
[docs] id_: Mapped[int] = mapped_column(primary_key=True)
[docs] from_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("node.id_"), index=True)
[docs] to_id: Mapped[uuid.UUID] = mapped_column(ForeignKey("node.id_"), index=True)
[docs] execution_id: Mapped[uuid.UUID | None] = mapped_column( ForeignKey("execution.id_"), nullable=True, index=True, )
@classmethod
[docs] def pydantic_create_class(cls) -> type[BaseModel]: return models.EdgeCreate
@classmethod
[docs] def pydantic_model_class(cls) -> type[BaseModel]: return models.Edge
@classmethod
[docs] def class_string(cls) -> str: return cls.__tablename__