|
@@ -81,6 +81,11 @@ class DatabaseConfig:
|
|
|
default='',
|
|
|
)
|
|
|
|
|
|
+ DB_EXTRAS: str = Field(
|
|
|
+ description='db extras options. Example: keepalives_idle=60&keepalives=1',
|
|
|
+ default='',
|
|
|
+ )
|
|
|
+
|
|
|
SQLALCHEMY_DATABASE_URI_SCHEME: str = Field(
|
|
|
description='db uri scheme',
|
|
|
default='postgresql',
|
|
@@ -89,7 +94,12 @@ class DatabaseConfig:
|
|
|
@computed_field
|
|
|
@property
|
|
|
def SQLALCHEMY_DATABASE_URI(self) -> str:
|
|
|
- db_extras = f"?client_encoding={self.DB_CHARSET}" if self.DB_CHARSET else ""
|
|
|
+ db_extras = (
|
|
|
+ f"{self.DB_EXTRAS}&client_encoding={self.DB_CHARSET}"
|
|
|
+ if self.DB_CHARSET
|
|
|
+ else self.DB_EXTRAS
|
|
|
+ ).strip("&")
|
|
|
+ db_extras = f"?{db_extras}" if db_extras else ""
|
|
|
return (f"{self.SQLALCHEMY_DATABASE_URI_SCHEME}://"
|
|
|
f"{self.DB_USERNAME}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_DATABASE}"
|
|
|
f"{db_extras}")
|
|
@@ -114,7 +124,7 @@ class DatabaseConfig:
|
|
|
default=False,
|
|
|
)
|
|
|
|
|
|
- SQLALCHEMY_ECHO: bool = Field(
|
|
|
+ SQLALCHEMY_ECHO: bool | str = Field(
|
|
|
description='whether to enable SqlAlchemy echo',
|
|
|
default=False,
|
|
|
)
|