Add VariableService and related files
This commit is contained in:
parent
00322edda2
commit
532615533a
5 changed files with 4 additions and 10 deletions
|
|
@ -4,20 +4,14 @@ import inspect
|
|||
import types
|
||||
from enum import Enum
|
||||
from typing import TYPE_CHECKING, Any, AsyncIterator, Callable, Dict, Iterator, List, Optional
|
||||
|
||||
from loguru import logger
|
||||
|
||||
from langflow.graph.schema import (
|
||||
INPUT_COMPONENTS,
|
||||
INPUT_FIELD_NAME,
|
||||
OUTPUT_COMPONENTS,
|
||||
InterfaceComponentTypes,
|
||||
ResultData,
|
||||
)
|
||||
from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData
|
||||
from langflow.graph.utils import UnbuiltObject, UnbuiltResult
|
||||
from langflow.graph.vertex.utils import generate_result
|
||||
from langflow.interface.initialize import loading
|
||||
from langflow.interface.listing import lazy_load_dict
|
||||
from langflow.schema.schema import INPUT_FIELD_NAME
|
||||
from langflow.services.deps import get_storage_service
|
||||
from langflow.utils.constants import DIRECT_TYPES
|
||||
from langflow.utils.schemas import ChatOutputResponse
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ if TYPE_CHECKING:
|
|||
|
||||
from langflow.services.cache.service import CacheService
|
||||
from langflow.services.chat.service import ChatService
|
||||
from langflow.services.credentials.service import VariableService
|
||||
from langflow.services.database.service import DatabaseService
|
||||
from langflow.services.monitor.service import MonitorService
|
||||
from langflow.services.plugins.service import PluginService
|
||||
|
|
@ -18,6 +17,7 @@ if TYPE_CHECKING:
|
|||
from langflow.services.storage.service import StorageService
|
||||
from langflow.services.store.service import StoreService
|
||||
from langflow.services.task.service import TaskService
|
||||
from langflow.services.variable.service import VariableService
|
||||
|
||||
|
||||
def get_socket_service() -> "SocketIOService":
|
||||
|
|
|
|||
0
src/backend/base/langflow/services/variable/__init__.py
Normal file
0
src/backend/base/langflow/services/variable/__init__.py
Normal file
15
src/backend/base/langflow/services/variable/factory.py
Normal file
15
src/backend/base/langflow/services/variable/factory.py
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
from langflow.services.factory import ServiceFactory
|
||||
from langflow.services.variable.service import VariableService
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from langflow.services.settings.service import SettingsService
|
||||
|
||||
|
||||
class VariableServiceFactory(ServiceFactory):
|
||||
def __init__(self):
|
||||
super().__init__(VariableService)
|
||||
|
||||
def create(self, settings_service: "SettingsService"):
|
||||
return VariableService(settings_service)
|
||||
36
src/backend/base/langflow/services/variable/service.py
Normal file
36
src/backend/base/langflow/services/variable/service.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
from typing import TYPE_CHECKING, Optional, Union
|
||||
from uuid import UUID
|
||||
|
||||
from fastapi import Depends
|
||||
from sqlmodel import Session, select
|
||||
|
||||
from langflow.services.auth import utils as auth_utils
|
||||
from langflow.services.base import Service
|
||||
from langflow.services.database.models.variable.model import Variable
|
||||
from langflow.services.deps import get_session
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from langflow.services.settings.service import SettingsService
|
||||
|
||||
|
||||
class VariableService(Service):
|
||||
name = "variable_service"
|
||||
|
||||
def __init__(self, settings_service: "SettingsService"):
|
||||
self.settings_service = settings_service
|
||||
|
||||
def get_credential(self, user_id: Union[UUID, str], name: str, session: Session = Depends(get_session)) -> str:
|
||||
# we get the credential from the database
|
||||
# credential = session.query(Variable).filter(Variable.user_id == user_id, Variable.name == name).first()
|
||||
credential = session.exec(select(Variable).where(Variable.user_id == user_id, Variable.name == name)).first()
|
||||
# we decrypt the value
|
||||
if not credential or not credential.value:
|
||||
raise ValueError(f"{name} credential not found.")
|
||||
decrypted = auth_utils.decrypt_api_key(credential.value, settings_service=self.settings_service)
|
||||
return decrypted
|
||||
|
||||
def list_credentials(
|
||||
self, user_id: Union[UUID, str], session: Session = Depends(get_session)
|
||||
) -> list[Optional[str]]:
|
||||
credentials = session.exec(select(Variable).where(Variable.user_id == user_id)).all()
|
||||
return [credential.name for credential in credentials]
|
||||
Loading…
Reference in a new issue