fix(config): rend le serveur SQL configurable en développement
Le repli de développement pointait en dur sur LaptopCA\SQLEXPRESS, ce qui rendait l'API inutilisable sur toute autre machine sans éditer le code. Le serveur vient désormais de DB_SERVER (défaut localhost), et DB_TRUSTED_CONNECTION permet de forcer l'authentification Windows. DB_PORT peut rester vide : une instance nommée (MonPoste\SQLEXPRESS) se joint sans port explicite.
This commit is contained in:
@@ -10,27 +10,38 @@ from contextlib import contextmanager
|
||||
|
||||
def _build_connection_string() -> str:
|
||||
"""
|
||||
En déploiement (variables d'environnement présentes), on se connecte en
|
||||
authentification SQL. Sinon, on garde la connexion Windows locale par défaut
|
||||
(poste de dev).
|
||||
Construit la chaîne de connexion ODBC à partir des variables
|
||||
d'environnement.
|
||||
|
||||
Deux modes d'authentification :
|
||||
• authentification SQL (déploiement) — dès que DB_USER est défini ;
|
||||
• authentification Windows (poste de dev) — sinon, ou en forçant
|
||||
DB_TRUSTED_CONNECTION=yes.
|
||||
|
||||
Le serveur par défaut reste modifiable par DB_SERVER : coder en dur le
|
||||
nom d'un poste rendait l'API inutilisable sur toute autre machine.
|
||||
"""
|
||||
server = os.getenv("DB_SERVER")
|
||||
if server:
|
||||
driver = os.getenv("DB_DRIVER", "ODBC Driver 18 for SQL Server")
|
||||
port = os.getenv("DB_PORT", "1433")
|
||||
return (
|
||||
f"Driver={{{driver}}};"
|
||||
f"Server={server},{port};"
|
||||
f"Database={os.getenv('DB_NAME', 'DataSentinel')};"
|
||||
f"UID={os.getenv('DB_USER')};"
|
||||
f"PWD={os.getenv('DB_PASSWORD')};"
|
||||
"Encrypt=yes;TrustServerCertificate=yes;"
|
||||
)
|
||||
server = os.getenv("DB_SERVER", "localhost")
|
||||
port = os.getenv("DB_PORT", "")
|
||||
base = os.getenv("DB_NAME", "DataSentinel")
|
||||
driver = os.getenv("DB_DRIVER", "ODBC Driver 18 for SQL Server")
|
||||
user = os.getenv("DB_USER")
|
||||
|
||||
# Une instance nommée (MonPoste\SQLEXPRESS) se joint sans port explicite.
|
||||
adresse = f"{server},{port}" if port else server
|
||||
|
||||
trusted = os.getenv("DB_TRUSTED_CONNECTION", "").lower() in ("1", "yes", "true")
|
||||
if user and not trusted:
|
||||
identification = f"UID={user};PWD={os.getenv('DB_PASSWORD', '')};"
|
||||
else:
|
||||
identification = "Trusted_Connection=yes;"
|
||||
|
||||
return (
|
||||
"Driver={ODBC Driver 17 for SQL Server};"
|
||||
"Server=LaptopCA\\SQLEXPRESS;"
|
||||
"Database=DataSentinel;"
|
||||
"Trusted_Connection=yes;"
|
||||
f"Driver={{{driver}}};"
|
||||
f"Server={adresse};"
|
||||
f"Database={base};"
|
||||
f"{identification}"
|
||||
"Encrypt=yes;TrustServerCertificate=yes;"
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user