dbsetup
Deploy to S3 / deploy (push) Successful in 34s
Details
Deploy to S3 / deploy (push) Successful in 34s
Details
parent
eca848b9d2
commit
2bbdc7b7c4
|
|
@ -76,7 +76,7 @@ class Settings(BaseSettings):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def url(self, *, async_driver: bool = True) -> URL:
|
def url(self, *, async_driver: bool = True) -> URL:
|
||||||
"""DSN with the driver forced; `sslmode` is translated to asyncpg's `ssl`."""
|
"""DSN with the driver forced; `sslmode` is mapped to asyncpg's `ssl` mode name."""
|
||||||
url = (
|
url = (
|
||||||
make_url(self.database_url)
|
make_url(self.database_url)
|
||||||
if self.database_url
|
if self.database_url
|
||||||
|
|
@ -92,8 +92,9 @@ class Settings(BaseSettings):
|
||||||
query = dict(url.query)
|
query = dict(url.query)
|
||||||
if self.db_sslmode:
|
if self.db_sslmode:
|
||||||
query.setdefault("sslmode", self.db_sslmode)
|
query.setdefault("sslmode", self.db_sslmode)
|
||||||
if async_driver and query.pop("sslmode", None) not in (None, "disable", "allow", "prefer"):
|
# asyncpg accepts ssl as an SSLMode name (require, verify-full, …), not "true".
|
||||||
query["ssl"] = "true"
|
if async_driver and (mode := query.pop("sslmode", None)) is not None:
|
||||||
|
query["ssl"] = mode
|
||||||
driver = "asyncpg" if async_driver else "psycopg2"
|
driver = "asyncpg" if async_driver else "psycopg2"
|
||||||
return url.set(drivername=f"postgresql+{driver}", query=query)
|
return url.set(drivername=f"postgresql+{driver}", query=query)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue