🐛 fix(custom_component.py): import get_db_manager function from langflow.services.utils to fix NameError

🐛 fix(factory.py): raise ValueError if no database URL provided in settings
🐛 fix(manager.py): change return type annotation of load_settings_from_yaml method to "SettingsManager" instead of "Settings"
🐛 fix(utils.py): import service_manager and ServiceType to fix NameError
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-08-05 23:27:38 -03:00
commit f9112facda
4 changed files with 14 additions and 5 deletions

View file

@ -3,6 +3,7 @@ from fastapi import HTTPException
from langflow.interface.custom.constants import CUSTOM_COMPONENT_SUPPORTED_TYPES
from langflow.interface.custom.component import Component
from langflow.interface.custom.directory_reader import DirectoryReader
from langflow.services.utils import get_db_manager
from langflow.utils import validate
@ -159,7 +160,8 @@ class CustomComponent(Component, extra=Extra.allow):
from langflow.processing.process import build_sorted_vertices_with_caching
from langflow.processing.process import process_tweaks
with session_getter() as session:
db_manager = get_db_manager()
with session_getter(db_manager) as session:
graph_data = flow.data if (flow := session.get(Flow, flow_id)) else None
if not graph_data:
raise ValueError(f"Flow {flow_id} not found")
@ -169,7 +171,8 @@ class CustomComponent(Component, extra=Extra.allow):
def list_flows(self, *, get_session: Optional[Callable] = None) -> List[Flow]:
get_session = get_session or session_getter
with get_session() as session:
db_manager = get_db_manager()
with get_session(db_manager) as session:
flows = session.query(Flow).all()
return flows
@ -182,8 +185,8 @@ class CustomComponent(Component, extra=Extra.allow):
get_session: Optional[Callable] = None,
) -> Flow:
get_session = get_session or session_getter
with get_session() as session:
db_manager = get_db_manager()
with get_session(db_manager) as session:
if flow_id:
flow = session.query(Flow).get(flow_id)
elif flow_name:

View file

@ -12,4 +12,6 @@ class DatabaseManagerFactory(ServiceFactory):
def create(self, settings_service: "SettingsManager"):
# Here you would have logic to create and configure a DatabaseManager
if not settings_service.settings.DATABASE_URL:
raise ValueError("No database URL provided")
return DatabaseManager(settings_service.settings.DATABASE_URL)

View file

@ -13,7 +13,7 @@ class SettingsManager(Service):
self.settings = settings
@classmethod
def load_settings_from_yaml(cls, file_path: str) -> Settings:
def load_settings_from_yaml(cls, file_path: str) -> "SettingsManager":
# Check if a string is a valid path or a file name
if "/" not in file_path:
# Get current path

View file

@ -9,6 +9,10 @@ def get_settings_manager() -> "SettingsManager":
return service_manager.get(ServiceType.SETTINGS_MANAGER)
def get_db_manager():
return service_manager.get(ServiceType.DATABASE_MANAGER)
def get_session():
db_manager = service_manager.get(ServiceType.DATABASE_MANAGER)
yield from db_manager.get_session()