add all files

This commit is contained in:
Rucus
2026-02-17 09:29:34 -06:00
parent b8c8d67c67
commit 782d203799
21925 changed files with 2433086 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
"""Configuration helpers for connecting to the MSSQL sandbox."""
from __future__ import annotations
import os
from dataclasses import dataclass
@dataclass(frozen=True)
class DbSettings:
"""Environment-driven connection settings for SQL Server.
Required variables:
- DB_SERVER (e.g.,
- DB_DATABASE (e.g., "SugarScale_Lasuca")
- DB_USERNAME (database login)
- DB_PASSWORD (database password)
Optional overrides:
- DB_DRIVER (defaults to "$env")
- DB_ENCRYPT ("true" to enable TLS)
- DB_TRUST_CERT ("true" to trust the server certificate)
"""
server: str
database: str
username: str
password: str
driver: str = "ODBC Driver 18 for SQL Server"
encrypt: bool = True
trust_server_certificate: bool = True
@classmethod
def from_env(cls) -> "DbSettings":
missing: list[str] = []
server = os.getenv("DB_SERVER")
if not server:
missing.append("DB_SERVER")
database = os.getenv("DB_DATABASE")
if not database:
missing.append("DB_DATABASE")
username = os.getenv("DB_USERNAME")
if not username:
missing.append("DB_USERNAME")
password = os.getenv("DB_PASSWORD")
if not password:
missing.append("DB_PASSWORD")
if missing:
raise RuntimeError(
"Missing required environment variables: " + ", ".join(missing)
)
driver = os.getenv("DB_DRIVER", "ODBC Driver 18 for SQL Server")
encrypt = os.getenv("DB_ENCRYPT", "true").lower() == "true"
trust = os.getenv("DB_TRUST_CERT", "true").lower() == "true"
return cls(
server=server,
database=database,
username=username,
password=password,
driver=driver,
encrypt=encrypt,
trust_server_certificate=trust,
)
def connection_string(self) -> str:
parts = [
f"DRIVER={{{self.driver}}}",
f"SERVER={self.server}",
f"DATABASE={self.database}",
f"UID={self.username}",
f"PWD={self.password}",
]
if self.encrypt:
parts.append("Encrypt=yes")
if self.trust_server_certificate:
parts.append("TrustServerCertificate=yes")
parts.append("MARS_Connection=yes")
return ";".join(parts)