tisserande.db.nodes

ORM model for the Node table (single table for all node types).

All node types (data files, config files, parameters, arrays, objects, python functions, member functions, shell functions) share this one table. Type-specific fields are nullable columns. This design simplifies graph queries since edges only reference one table.

Classes

NodeTable

Declarative base for all database models.

Module Contents

class tisserande.db.nodes.NodeTable[source]

Bases: tisserande.db.base.Base

Declarative base for all database models.

Provides:
  • Schema assignment from configuration

  • Consistent constraint naming for migrations

  • Shared metadata for all models

  • Required interface for Pydantic integration

  • Lifecycle hooks for create, update, and delete operations

Subclasses must implement the abstract methods for Pydantic model integration. Subclasses may override hook methods to add custom behavior at various points in the row lifecycle.

id_: sqlalchemy.orm.Mapped[uuid.UUID][source]
type_: sqlalchemy.orm.Mapped[str][source]
execution_id: sqlalchemy.orm.Mapped[uuid.UUID | None][source]
path: sqlalchemy.orm.Mapped[str | None][source]
config_data: sqlalchemy.orm.Mapped[dict | None][source]
value_float: sqlalchemy.orm.Mapped[float | None][source]
value_json: sqlalchemy.orm.Mapped[dict | list | None][source]
arg_name: sqlalchemy.orm.Mapped[str | None][source]
data_file_type_id: sqlalchemy.orm.Mapped[int | None][source]
config_file_type_id: sqlalchemy.orm.Mapped[int | None][source]
config_dict_type_id: sqlalchemy.orm.Mapped[int | None][source]
parameter_id: sqlalchemy.orm.Mapped[int | None][source]
array_id: sqlalchemy.orm.Mapped[int | None][source]
class_id: sqlalchemy.orm.Mapped[int | None][source]
python_function_id: sqlalchemy.orm.Mapped[int | None][source]
member_function_id: sqlalchemy.orm.Mapped[int | None][source]
shell_function_id: sqlalchemy.orm.Mapped[int | None][source]
classmethod pydantic_create_class() type[pydantic.BaseModel][source]

Pydantic model used to create rows in this table.

This model defines the schema for input validation when creating new rows. It may differ from pydantic_model_class() if creation requires different fields than the full model representation.

Returns:

The Pydantic model class for row creation

Examples

>>> class User(Base):
...     @classmethod
...     def pydantic_create_class(cls) -> type[BaseModel]:
...         return UserCreate  # Excludes id, created_at, etc.
classmethod pydantic_model_class() type[pydantic.BaseModel][source]

Pydantic model class for this table.

This model defines the complete schema for serialization and validation of existing rows, typically including all fields.

Returns:

The Pydantic model class for row serialization/validation

Examples

>>> class User(Base):
...     @classmethod
...     def pydantic_model_class(cls) -> type[BaseModel]:
...         return UserModel  # Includes all fields
classmethod class_string() str[source]

Name to use for help functions and descriptions.

Override this if you want a custom display name different from __name__.

Returns:

The class name for display purposes