college/Summer-2024/CS-3443/LakeWatch/LakeWatchScraper/lakewatchscraper/__init__.py

37 lines
1.0 KiB
Python

import os
from dataclasses import dataclass
class ConfigError(Exception):
pass
@dataclass
class DatabaseSettings:
host: str
port: int
username: str
password: str
dbname: str
@staticmethod
def from_env() -> "DatabaseSettings":
host = os.environ.get("APP_DATABASE_HOST")
port = os.environ.get("APP_DATABASE_PORT")
username = os.environ.get("APP_DATABASE_USERNAME")
password = os.environ.get("APP_DATABASE_PASSWORD")
dbname = os.environ.get("APP_DATABASE_NAME")
if not host:
raise ConfigError("No `host` variable provided!")
if not port:
raise ConfigError("No `port` variable provided!")
if not username:
raise ConfigError("No `username` variable provided!")
if not password:
raise ConfigError("No `password` variable provided!")
if not dbname:
raise ConfigError("No `dbname` variable provided!")
return DatabaseSettings(host, int(port), username, password, dbname)