import os from pathlib import Path from dotenv import load_dotenv load_dotenv() def _get_base_dir() -> Path: infamous_dir = os.getenv("INFAMOUSDIR") if not infamous_dir: return Path(__file__).resolve().parent.parent.parent return Path(infamous_dir) / "projects-cea" / "spotrates-cea" BASE_DIR = _get_base_dir() class PATHS: base = BASE_DIR sql = BASE_DIR / "sql" sql_init = BASE_DIR / "sql" / "_create" class QUERY_PATHS: _sql = PATHS.sql _init = PATHS.sql_init # Operational queries snw_upsert = _sql / "snw-upsert.sql" snw_create_staging = _sql / "snw-create-staging.sql" snw_get_cutoff = _sql / "snw-get-cutoff.sql" snw_get_new = _sql / "snw-get-new.sql" rdb_get_cutoff = _sql / "rdb-get-cutoff.sql" # Init DDL snw_init = _init / "snw-init.sql" snw_ensure = _init / "snw-ensure.sql" snw_init_vw = _init / "snw-init-vw.sql" rdb_init = _init / "rdb-init.sql" rdb_ensure = _init / "rdb-ensure.sql" WAREHOUSES = { "small": "SME_ANALYTICS_FI_SMALL_WAREHOUSE", } TABLES = { "snw": "sme_analytics.fi.dim_spot_exchange_rates", "snw_vw": "sme_analytics.shared.dim_spot_exchange_rates", "rdb": "prod_shared.dim_spot_exchange_rates", } API_BASE_URL = "https://api.frankfurter.dev/v2"