fix: vault database
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
import json
|
import json
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
from urllib.parse import quote
|
||||||
from pydantic import Field,PrivateAttr
|
from pydantic import Field,PrivateAttr
|
||||||
from pydantic_settings import BaseSettings,SettingsConfigDict
|
from pydantic_settings import BaseSettings,SettingsConfigDict
|
||||||
from src.infrastructure.vault import VaultClient
|
from src.infrastructure.vault import VaultClient
|
||||||
@@ -67,7 +68,20 @@ class Settings(BaseSettings):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def DATABASE_URL(self) -> str:
|
def DATABASE_URL(self) -> str:
|
||||||
return self._get_vault_secret(self._vault_database_secrets,'DATABASE_URL','database_url')
|
ready_url = self._get_vault_secret(self._vault_database_secrets,'DATABASE_URL','database_url')
|
||||||
|
if ready_url:
|
||||||
|
return ready_url
|
||||||
|
|
||||||
|
host = self._get_vault_secret(self._vault_database_secrets,'host','HOST')
|
||||||
|
port = self._get_vault_secret(self._vault_database_secrets,'port','PORT') or '5432'
|
||||||
|
user = self._get_vault_secret(self._vault_database_secrets,'user','USER')
|
||||||
|
password = self._get_vault_secret(self._vault_database_secrets,'password','PASSWORD')
|
||||||
|
name = self._get_vault_secret(self._vault_database_secrets,'name','NAME','database','DATABASE')
|
||||||
|
if not host or not user or not password or not name:
|
||||||
|
return ''
|
||||||
|
quoted_user = quote(user,safe='')
|
||||||
|
quoted_password = quote(password,safe='')
|
||||||
|
return f'postgresql+asyncpg://{quoted_user}:{quoted_password}@{host}:{port}/{name}'
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
Reference in New Issue
Block a user