From d7616e33a1864b696a3ec22eb98b54b456a0fd48 Mon Sep 17 00:00:00 2001
From: Alexander PapaTutuWawa <papatutuwawa@polynom.me>
Date: Mon, 21 Apr 2025 17:27:28 +0200
Subject: [PATCH] Fix unknown options for psycopg2 startup

---
 Containerfile                 | 2 +-
 src/xmpp_api/config/config.py | 5 ++++-
 src/xmpp_api/db/__init__.py   | 4 +---
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/Containerfile b/Containerfile
index 6ffec29..5be5b42 100644
--- a/Containerfile
+++ b/Containerfile
@@ -5,7 +5,7 @@ ADD . /app
 RUN apk add --no-cache cargo git libpq libpq-dev && \
     uv sync --frozen --no-install-project --no-dev --extra postgres
 RUN --mount=type=cache,target=/root/.cache/uv \
-    uv sync --frozen --no-dev
+    uv sync --frozen --no-dev --extra postgres
 
 FROM python:3.13-alpine3.20
 # slixmpp requires libgcc and libpq for Postgres support
diff --git a/src/xmpp_api/config/config.py b/src/xmpp_api/config/config.py
index 7743c25..3f9b347 100644
--- a/src/xmpp_api/config/config.py
+++ b/src/xmpp_api/config/config.py
@@ -1,5 +1,5 @@
 import os
-from typing import Annotated, Self, cast
+from typing import Annotated, Any, Self, cast
 import logging
 
 from pydantic import BaseModel, Field, model_validator
@@ -53,6 +53,9 @@ class _DatabaseConfig(BaseModel):
     # The file to read the database URI from
     uri_file: str | None = Field(default=None)
 
+    # sqlalchemy options for the database connection
+    connect_args: dict[str, Any] = Field(default_factory=dict)
+
     @model_validator(mode="after")
     def validate_secret(self) -> Self:
         if self.uri_plain is None and self.uri_file is None:
diff --git a/src/xmpp_api/db/__init__.py b/src/xmpp_api/db/__init__.py
index 7f14468..4e7e146 100644
--- a/src/xmpp_api/db/__init__.py
+++ b/src/xmpp_api/db/__init__.py
@@ -12,9 +12,7 @@ from xmpp_api.db.bot import Bot, AllowedJid
 def get_engine(config: ConfigDep) -> Engine:
     return create_engine(
         config.database.uri,
-        connect_args={
-            "check_same_thread": False,
-        },
+        connect_args=config.database.connect_args,
     )