add varaible service base
This commit is contained in:
parent
977181fd22
commit
59f96c2ea3
4 changed files with 173 additions and 4 deletions
|
|
@ -73,6 +73,10 @@ class Settings(BaseSettings):
|
|||
max_overflow: int = 20
|
||||
"""The number of connections to allow that can be opened beyond the pool size. If not provided, the default is 10."""
|
||||
cache_type: str = "async"
|
||||
|
||||
"""The store can be 'db' or 'kubernetes'."""
|
||||
variable_store: str = "db"
|
||||
|
||||
remove_api_keys: bool = False
|
||||
components_path: List[str] = []
|
||||
langchain_cache: str = "InMemoryCache"
|
||||
|
|
|
|||
109
src/backend/base/langflow/services/variable/base.py
Normal file
109
src/backend/base/langflow/services/variable/base.py
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
import abc
|
||||
from typing import Optional, Union
|
||||
from uuid import UUID
|
||||
|
||||
from fastapi import Depends
|
||||
from sqlmodel import Session
|
||||
|
||||
from langflow.services.base import Service
|
||||
from langflow.services.database.models.variable.model import Variable
|
||||
from langflow.services.deps import get_session
|
||||
|
||||
class VariableService(Service):
|
||||
"""
|
||||
Abstract base class for a variable service.
|
||||
"""
|
||||
name = "variable_service"
|
||||
|
||||
@abc.abstractmethod
|
||||
def initialize_user_variables(self, user_id: Union[UUID, str], session: Session) -> None:
|
||||
"""
|
||||
Initialize user variables.
|
||||
|
||||
Args:
|
||||
user_id: The user ID.
|
||||
session: The database session.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_variable(self, user_id: Union[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(self, user_id: Union[UUID, str], session: Session) -> list[Optional[str]]:
|
||||
"""
|
||||
List all variables.
|
||||
|
||||
Args:
|
||||
user_id: The user ID.
|
||||
session: The database session.
|
||||
|
||||
Returns:
|
||||
A list of variable names.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def update_variable(self, user_id: Union[UUID, str], name: str, value: str, session: Session) -> 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
|
||||
def delete_variable(self, user_id: Union[UUID, str], name: str, session: Session) -> Variable:
|
||||
"""
|
||||
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
|
||||
def create_variable(
|
||||
self,
|
||||
user_id: Union[UUID, str],
|
||||
name: str,
|
||||
value: str,
|
||||
default_fields: list[str] = [],
|
||||
_type: str = "Generic",
|
||||
session: Session = Depends(get_session),
|
||||
) -> 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.
|
||||
"""
|
||||
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
from langflow.services.factory import ServiceFactory
|
||||
from langflow.services.variable.service import VariableService
|
||||
from langflow.services.variable.service import DatabaseVariableService, KubernetesSecretService
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from langflow.services.settings.service import SettingsService
|
||||
|
|
@ -12,4 +12,10 @@ class VariableServiceFactory(ServiceFactory):
|
|||
super().__init__(VariableService)
|
||||
|
||||
def create(self, settings_service: "SettingsService"):
|
||||
return VariableService(settings_service)
|
||||
# here you would have logic to create and configure a VariableService
|
||||
# based on the settings_service
|
||||
|
||||
if settings_service.settings.variable_store == "kubernetes":
|
||||
return KubernetesSecretService(settings_service)
|
||||
else:
|
||||
return DatabaseVariableService(settings_service)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from sqlmodel import Session, select
|
|||
|
||||
from langflow.services.auth import utils as auth_utils
|
||||
from langflow.services.base import Service
|
||||
from langflow.services.variable.base import VariableService
|
||||
from langflow.services.database.models.variable.model import Variable, VariableCreate
|
||||
from langflow.services.deps import get_session
|
||||
|
||||
|
|
@ -15,8 +16,7 @@ if TYPE_CHECKING:
|
|||
from langflow.services.settings.service import SettingsService
|
||||
|
||||
|
||||
class VariableService(Service):
|
||||
name = "variable_service"
|
||||
class DatabaseVariableService(VariableService, Service):
|
||||
|
||||
def __init__(self, settings_service: "SettingsService"):
|
||||
self.settings_service = settings_service
|
||||
|
|
@ -127,3 +127,53 @@ class VariableService(Service):
|
|||
session.commit()
|
||||
session.refresh(variable)
|
||||
return variable
|
||||
|
||||
|
||||
|
||||
class KubernetesSecretService(VariableService, Service):
|
||||
|
||||
def __init__(self, settings_service: "SettingsService"):
|
||||
self.settings_service = settings_service
|
||||
|
||||
def initialize_user_variables(self, user_id: Union[UUID, str], session: Session = Depends(get_session)):
|
||||
return
|
||||
|
||||
def get_variable(
|
||||
self,
|
||||
user_id: Union[UUID, str],
|
||||
name: str,
|
||||
field: str,
|
||||
session: Session = Depends(get_session),
|
||||
) -> str:
|
||||
return ""
|
||||
|
||||
def list_variables(self, user_id: Union[UUID, str], session: Session = Depends(get_session)) -> list[Optional[str]]:
|
||||
return []
|
||||
|
||||
def update_variable(
|
||||
self,
|
||||
user_id: Union[UUID, str],
|
||||
name: str,
|
||||
value: str,
|
||||
session: Session = Depends(get_session),
|
||||
):
|
||||
return
|
||||
|
||||
def delete_variable(
|
||||
self,
|
||||
user_id: Union[UUID, str],
|
||||
name: str,
|
||||
session: Session = Depends(get_session),
|
||||
):
|
||||
return
|
||||
|
||||
def create_variable(
|
||||
self,
|
||||
user_id: Union[UUID, str],
|
||||
name: str,
|
||||
value: str,
|
||||
default_fields: list[str] = [],
|
||||
_type: str = "Generic",
|
||||
session: Session = Depends(get_session),
|
||||
):
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue