From 501ba416d14076330abd8ad29c5bed0372391b58 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 7 Dec 2023 14:02:41 -0300 Subject: [PATCH] Refactor database connection logic in base settings --- .../langflow/services/settings/base.py | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/backend/langflow/services/settings/base.py b/src/backend/langflow/services/settings/base.py index 1f30aa3e0..91b0044b6 100644 --- a/src/backend/langflow/services/settings/base.py +++ b/src/backend/langflow/services/settings/base.py @@ -1,15 +1,15 @@ import contextlib import json -import orjson import os -from shutil import copy2 -from typing import Optional, List from pathlib import Path +from shutil import copy2 +from typing import List, Optional +import orjson import yaml +from loguru import logger from pydantic import field_validator, validator from pydantic_settings import BaseSettings, SettingsConfigDict -from loguru import logger # BASE_COMPONENTS_PATH = str(Path(__file__).parent / "components") BASE_COMPONENTS_PATH = str(Path(__file__).parent.parent.parent / "components") @@ -86,31 +86,29 @@ class Settings(BaseSettings): value = langflow_database_url logger.debug("Using LANGFLOW_DATABASE_URL env variable.") else: - # logger.debug("No DATABASE_URL env variable, using sqlite database") - logger.debug("No DATABASE_URL env variable, using custom database from secrets of {}".format(os.environ["host"])) + logger.debug("No DATABASE_URL env variable, using sqlite database") # Originally, we used sqlite:///./langflow.db # so we need to migrate to the new format # if there is a database in that location - # if not values["CONFIG_DIR"]: - # raise ValueError( - # "CONFIG_DIR not set, please set it or provide a DATABASE_URL" - # ) + if not values["CONFIG_DIR"]: + raise ValueError( + "CONFIG_DIR not set, please set it or provide a DATABASE_URL" + ) - # new_path = f"{values['CONFIG_DIR']}/langflow.db" - # if Path("./langflow.db").exists(): - # if Path(new_path).exists(): - # logger.debug(f"Database already exists at {new_path}, using it") - # else: - # try: - # logger.debug("Copying existing database to new location") - # copy2("./langflow.db", new_path) - # logger.debug(f"Copied existing database to {new_path}") - # except Exception: - # logger.error("Failed to copy database, using default path") - # new_path = "./langflow.db" + new_path = f"{values['CONFIG_DIR']}/langflow.db" + if Path("./langflow.db").exists(): + if Path(new_path).exists(): + logger.debug(f"Database already exists at {new_path}, using it") + else: + try: + logger.debug("Copying existing database to new location") + copy2("./langflow.db", new_path) + logger.debug(f"Copied existing database to {new_path}") + except Exception: + logger.error("Failed to copy database, using default path") + new_path = "./langflow.db" - # value = f"sqlite:///{new_path}" - value = "mysql+pymysql://{}:{}@{}:3306/{}".format(os.environ["username"],os.environ["password"],os.environ["host"],os.environ["dbname"]) + value = f"sqlite:///{new_path}" return value