mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-09 03:04:54 -04:00
add fallback to urlencode the postgres password if it fails
This commit is contained in:
parent
0ce05c781c
commit
e35b2e9fbf
@ -1,5 +1,6 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from pathlib import Path
|
||||
from urllib import parse as urlparse
|
||||
|
||||
from pydantic import BaseModel, PostgresDsn
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
@ -44,15 +45,28 @@ class PostgresProvider(AbstractDBProvider, BaseSettings):
|
||||
@property
|
||||
def db_url(self) -> str:
|
||||
host = f"{self.POSTGRES_SERVER}:{self.POSTGRES_PORT}"
|
||||
return str(
|
||||
PostgresDsn.build(
|
||||
try:
|
||||
url = PostgresDsn.build(
|
||||
scheme="postgresql",
|
||||
username=self.POSTGRES_USER,
|
||||
password=self.POSTGRES_PASSWORD,
|
||||
host=host,
|
||||
path=f"{self.POSTGRES_DB or ''}",
|
||||
)
|
||||
)
|
||||
except ValueError as outer_error:
|
||||
try:
|
||||
# if the password contains special characters, it needs to be URL encoded
|
||||
url = PostgresDsn.build(
|
||||
scheme="postgresql",
|
||||
username=self.POSTGRES_USER,
|
||||
password=urlparse.quote_plus(self.POSTGRES_PASSWORD),
|
||||
host=host,
|
||||
path=f"{self.POSTGRES_DB or ''}",
|
||||
)
|
||||
except Exception:
|
||||
raise outer_error
|
||||
|
||||
return str(url)
|
||||
|
||||
@property
|
||||
def db_url_public(self) -> str:
|
||||
|
Loading…
x
Reference in New Issue
Block a user