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