Refactor database connection logic in base

settings
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-12-07 14:02:41 -03:00
commit 501ba416d1

View file

@ -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