fix: vault database

This commit is contained in:
2026-05-12 00:08:30 +03:00
parent 35f09a0fbd
commit b1a763675a

View File

@@ -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