real-estate / project /config.py
brestok's picture
fixed db
68e4446
import os
import pathlib
from functools import lru_cache
from environs import Env
from openai import AsyncOpenAI
env = Env()
env.read_env()
class BaseConfig:
BASE_DIR: pathlib.Path = pathlib.Path(__file__).parent.parent
OPENAI_CLIENT = AsyncOpenAI(api_key=os.getenv('OPENAI_API_KEY'))
REPORT_PROMPT = """Summarize the key points from the user's messages, organizing the summary into a structured
format. Conclude with a brief report in the language that the user speaks that encapsulates the essence of the
discussion."""
DATABASE_URL = (
f"postgresql+psycopg://{os.getenv('DATABASE_USER')}:"
f"{os.getenv('DATABASE_PASSWORD')}@"
f"{os.getenv('DATABASE_HOST')}:"
f"{os.getenv('DATABASE_PORT')}/"
f"{os.getenv('DATABASE_NAME')}"
)
IMAGE_PROMPT = """Summarize architectural style, layout, and unique features of property images briefly.
Highlight key elements like natural light, outdoor spaces, and distinctive design details. Mention root uses,
major fixtures, and special amenities concisely. Assess curb appeal, condition, and notable upgrades briefly,
focusing on aspects enhancing comfort, aesthetic, and quality of living. Limit response to a short paragraph. """
class DevelopmentConfig(BaseConfig):
pass
class ProductionConfig(BaseConfig):
ORIGINS = [
"http://localhost:3000",
]
class TestConfig(BaseConfig):
pass
@lru_cache()
def get_settings() -> DevelopmentConfig | ProductionConfig | TestConfig:
config_cls_dict = {
'development': DevelopmentConfig,
'production': ProductionConfig,
'testing': TestConfig
}
config_name = env('FASTAPI_CONFIG', default='production')
config_cls = config_cls_dict[config_name]
return config_cls()
settings = get_settings()