This commit is contained in:
Georges-Antoine Assi
2025-11-20 10:41:47 -05:00
parent 99f6e97537
commit fde335f761
4 changed files with 35 additions and 52 deletions

View File

@@ -42,8 +42,8 @@ FRONTEND_RESOURCES_PATH: Final[str] = "/assets/romm/resources"
SEVEN_ZIP_TIMEOUT: Final[int] = safe_int(_get_env("SEVEN_ZIP_TIMEOUT"), 60)
# DATABASE
DB_HOST: Final[str | None] = _get_env("DB_HOST", "127.0.0.1")
DB_PORT: Final[int | None] = safe_int(_get_env("DB_PORT"), 3306)
DB_HOST: Final[str | None] = _get_env("DB_HOST")
DB_PORT: Final[int | None] = safe_int(_get_env("DB_PORT"))
DB_USER: Final[str | None] = _get_env("DB_USER")
DB_PASSWD: Final[str | None] = _get_env("DB_PASSWD")
DB_NAME: Final[str] = _get_env("DB_NAME", "romm")
@@ -51,8 +51,8 @@ DB_QUERY_JSON: Final[str | None] = _get_env("DB_QUERY_JSON")
ROMM_DB_DRIVER: Final[str] = _get_env("ROMM_DB_DRIVER", "mariadb")
# REDIS
REDIS_HOST: Final[str] = _get_env("REDIS_HOST", "127.0.0.1")
REDIS_PORT: Final[int] = safe_int(_get_env("REDIS_PORT"), 6379)
REDIS_HOST: Final[str | None] = _get_env("REDIS_HOST")
REDIS_PORT: Final[int | None] = safe_int(_get_env("REDIS_PORT"))
REDIS_PASSWORD: Final[str | None] = _get_env("REDIS_PASSWORD")
REDIS_USERNAME: Final[str | None] = _get_env("REDIS_USERNAME")
REDIS_DB: Final[int] = safe_int(_get_env("REDIS_DB"), 0)
@@ -62,7 +62,7 @@ REDIS_URL: Final[str] = str(
scheme="rediss" if REDIS_SSL else "redis",
user=REDIS_USERNAME or None,
password=REDIS_PASSWORD or None,
host=REDIS_HOST,
host=REDIS_HOST or "127.0.0.1",
port=REDIS_PORT,
path=f"/{REDIS_DB}",
)

View File

@@ -151,13 +151,7 @@ class ConfigManager:
log.critical(f"{hl(ROMM_DB_DRIVER)} database not supported")
sys.exit(3)
username = DB_USER
password = DB_PASSWD
host = DB_HOST
port = DB_PORT
database = DB_NAME
if not username or not password:
if not DB_USER or not DB_PASSWD:
log.critical(
"Missing database credentials, check your environment variables!"
)
@@ -171,17 +165,13 @@ class ConfigManager:
log.critical(f"Invalid JSON in DB_QUERY_JSON: {exc}")
sys.exit(3)
# Unset host/port if using query to connect
host = None
port = None
return URL.create(
drivername=driver,
username=username,
password=password,
host=host,
port=port,
database=database,
username=DB_USER,
password=DB_PASSWD,
host=DB_HOST,
port=DB_PORT,
database=DB_NAME,
query=query,
)

View File

@@ -77,13 +77,6 @@ router = APIRouter(
)
def safe_int_or_none(value: Any) -> int | None:
if value is None or value == "":
return None
return safe_int(value)
def parse_raw_metadata(data: FormData, form_key: str) -> dict | None:
raw_json = data.get(form_key, None)
if not raw_json or str(raw_json).strip() == "":
@@ -759,36 +752,24 @@ async def update_rom(
return DetailedRomSchema.from_orm_with_request(rom, request)
cleaned_data: dict[str, Any] = {
"igdb_id": (
safe_int_or_none(data["igdb_id"]) if "igdb_id" in data else rom.igdb_id
),
"sgdb_id": (
safe_int_or_none(data["sgdb_id"]) if "sgdb_id" in data else rom.sgdb_id
),
"moby_id": (
safe_int_or_none(data["moby_id"]) if "moby_id" in data else rom.moby_id
),
"ss_id": safe_int_or_none(data["ss_id"]) if "ss_id" in data else rom.ss_id,
"ra_id": safe_int_or_none(data["ra_id"]) if "ra_id" in data else rom.ra_id,
"igdb_id": (safe_int(data["igdb_id"]) if "igdb_id" in data else rom.igdb_id),
"sgdb_id": (safe_int(data["sgdb_id"]) if "sgdb_id" in data else rom.sgdb_id),
"moby_id": (safe_int(data["moby_id"]) if "moby_id" in data else rom.moby_id),
"ss_id": safe_int(data["ss_id"]) if "ss_id" in data else rom.ss_id,
"ra_id": safe_int(data["ra_id"]) if "ra_id" in data else rom.ra_id,
"launchbox_id": (
safe_int_or_none(data["launchbox_id"])
safe_int(data["launchbox_id"])
if "launchbox_id" in data
else rom.launchbox_id
),
"hasheous_id": (
safe_int_or_none(data["hasheous_id"])
if "hasheous_id" in data
else rom.hasheous_id
),
"tgdb_id": (
safe_int_or_none(data["tgdb_id"]) if "tgdb_id" in data else rom.tgdb_id
safe_int(data["hasheous_id"]) if "hasheous_id" in data else rom.hasheous_id
),
"tgdb_id": (safe_int(data["tgdb_id"]) if "tgdb_id" in data else rom.tgdb_id),
"flashpoint_id": (
data["flashpoint_id"] if "flashpoint_id" in data else rom.flashpoint_id
),
"hltb_id": (
safe_int_or_none(data["hltb_id"]) if "hltb_id" in data else rom.hltb_id
),
"hltb_id": (safe_int(data["hltb_id"]) if "hltb_id" in data else rom.hltb_id),
}
# Add raw metadata parsing

View File

@@ -1,5 +1,5 @@
import json
from typing import Any, Sequence
from typing import Any, Sequence, overload
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql as sa_pg
@@ -132,7 +132,13 @@ def safe_str_to_bool(value: Any, default: bool = False) -> bool:
return default
def safe_float(value: Any, default: float = 0.0) -> float:
@overload
def safe_float(value: Any, default: float) -> float: ...
@overload
def safe_float(value: Any, default: None = None) -> float | None: ...
def safe_float(value: Any, default: float | None = None) -> float | None:
"""Safely convert a value to float, returning default if conversion fails."""
try:
return float(value)
@@ -140,7 +146,13 @@ def safe_float(value: Any, default: float = 0.0) -> float:
return default
def safe_int(value: Any, default: int = 0) -> int:
@overload
def safe_int(value: Any, default: int) -> int: ...
@overload
def safe_int(value: Any, default: None = None) -> int | None: ...
def safe_int(value: Any, default: int | None = None) -> int | None:
"""Safely convert a value to int, returning default if conversion fails."""
try:
return int(value)