| import abc |
| from uuid import UUID |
|
|
| from sqlmodel import Session |
| from sqlmodel.ext.asyncio.session import AsyncSession |
|
|
| from langflow.services.base import Service |
| from langflow.services.database.models.variable.model import Variable |
|
|
|
|
| class VariableService(Service): |
| """Abstract base class for a variable service.""" |
|
|
| name = "variable_service" |
|
|
| @abc.abstractmethod |
| async def initialize_user_variables(self, user_id: UUID | str, session: AsyncSession) -> None: |
| """Initialize user variables. |
| |
| Args: |
| user_id: The user ID. |
| session: The database session. |
| """ |
|
|
| @abc.abstractmethod |
| def get_variable(self, user_id: UUID | str, name: str, field: str, session: Session) -> str: |
| """Get a variable value. |
| |
| Args: |
| user_id: The user ID. |
| name: The name of the variable. |
| field: The field of the variable. |
| session: The database session. |
| |
| Returns: |
| The value of the variable. |
| """ |
|
|
| @abc.abstractmethod |
| def list_variables_sync(self, user_id: UUID | str, session: Session) -> list[str | None]: |
| """List all variables. |
| |
| Args: |
| user_id: The user ID. |
| session: The database session. |
| |
| Returns: |
| A list of variable names. |
| """ |
|
|
| @abc.abstractmethod |
| async def list_variables(self, user_id: UUID | str, session: AsyncSession) -> list[str | None]: |
| """List all variables. |
| |
| Args: |
| user_id: The user ID. |
| session: The database session. |
| |
| Returns: |
| A list of variable names. |
| """ |
|
|
| @abc.abstractmethod |
| async def update_variable(self, user_id: UUID | str, name: str, value: str, session: AsyncSession) -> Variable: |
| """Update a variable. |
| |
| Args: |
| user_id: The user ID. |
| name: The name of the variable. |
| value: The value of the variable. |
| session: The database session. |
| |
| Returns: |
| The updated variable. |
| """ |
|
|
| @abc.abstractmethod |
| async def delete_variable(self, user_id: UUID | str, name: str, session: AsyncSession) -> None: |
| """Delete a variable. |
| |
| Args: |
| user_id: The user ID. |
| name: The name of the variable. |
| session: The database session. |
| |
| Returns: |
| The deleted variable. |
| """ |
|
|
| @abc.abstractmethod |
| async def delete_variable_by_id(self, user_id: UUID | str, variable_id: UUID, session: AsyncSession) -> None: |
| """Delete a variable by ID. |
| |
| Args: |
| user_id: The user ID. |
| variable_id: The ID of the variable. |
| session: The database session. |
| """ |
|
|
| @abc.abstractmethod |
| async def create_variable( |
| self, |
| user_id: UUID | str, |
| name: str, |
| value: str, |
| *, |
| default_fields: list[str], |
| type_: str, |
| session: AsyncSession, |
| ) -> Variable: |
| """Create a variable. |
| |
| Args: |
| user_id: The user ID. |
| name: The name of the variable. |
| value: The value of the variable. |
| default_fields: The default fields of the variable. |
| type_: The type of the variable. |
| session: The database session. |
| |
| Returns: |
| The created variable. |
| """ |
|
|