mirror of
https://github.com/grillazz/fastapi-sqlalchemy-asyncpg.git
synced 2025-08-26 16:40:40 +03:00
49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
import os
|
|
|
|
from pydantic import PostgresDsn, RedisDsn, computed_field
|
|
from pydantic_core import MultiHostUrl
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_ignore_empty=True,
|
|
extra="ignore"
|
|
)
|
|
redis_url: RedisDsn = os.getenv("REDIS_URL")
|
|
jwt_algorithm: str = os.getenv("JWT_ALGORITHM")
|
|
jwt_expire: int = os.getenv("JWT_EXPIRE")
|
|
|
|
SQL_USER: str
|
|
SQL_PASS: str
|
|
SQL_HOST: str
|
|
SQL_DB: str
|
|
|
|
@computed_field
|
|
@property
|
|
def asyncpg_url(self) -> PostgresDsn:
|
|
"""
|
|
This is a computed field that generates a PostgresDsn URL for asyncpg.
|
|
|
|
The URL is built using the MultiHostUrl.build method, which takes the following parameters:
|
|
- scheme: The scheme of the URL. In this case, it is "postgresql+asyncpg".
|
|
- username: The username for the SQL database, retrieved from the SQL_USER environment variable.
|
|
- password: The password for the SQL database, retrieved from the SQL_PASS environment variable.
|
|
- host: The host of the SQL database, retrieved from the SQL_HOST environment variable.
|
|
- path: The path of the SQL database, retrieved from the SQL_DB environment variable.
|
|
|
|
Returns:
|
|
PostgresDsn: The constructed PostgresDsn URL for asyncpg.
|
|
"""
|
|
return MultiHostUrl.build(
|
|
scheme="postgresql+asyncpg",
|
|
username=self.SQL_USER,
|
|
password=self.SQL_PASS,
|
|
host=self.SQL_HOST,
|
|
path=self.SQL_DB,
|
|
)
|
|
|
|
|
|
settings = Settings()
|