Skip to content

_database

DatabaseSettings

Bases: BaseSettings

Minimal set of configurations needed for operating on the database (e.g for schema migrations).

ATTRIBUTE DESCRIPTION
DB_ECHO

If "true", make database operations verbose.

TYPE: Literal['true', 'false']

POSTGRES_USER

User to use when connecting to the PostgreSQL database.

TYPE: NonEmptyStr | None

POSTGRES_PASSWORD

Password to use when connecting to the PostgreSQL database.

TYPE: SecretStr | None

POSTGRES_HOST

URL to the PostgreSQL server or path to a UNIX domain socket.

TYPE: NonEmptyStr

POSTGRES_PORT

Port number to use when connecting to the PostgreSQL server.

TYPE: NonNegativeInt

POSTGRES_DB

Name of the PostgreSQL database to connect to.

TYPE: NonEmptyStr

Source code in fractal_server/config/_database.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class DatabaseSettings(BaseSettings):
    """
    Minimal set of configurations needed for operating on the database (e.g
    for schema migrations).

    Attributes:
        DB_ECHO:
            If `"true"`, make database operations verbose.
        POSTGRES_USER:
            User to use when connecting to the PostgreSQL database.
        POSTGRES_PASSWORD:
            Password to use when connecting to the PostgreSQL database.
        POSTGRES_HOST:
            URL to the PostgreSQL server or path to a UNIX domain socket.
        POSTGRES_PORT:
            Port number to use when connecting to the PostgreSQL server.
        POSTGRES_DB:
            Name of the PostgreSQL database to connect to.
    """

    model_config = SettingsConfigDict(**SETTINGS_CONFIG_DICT)

    DB_ECHO: Literal["true", "false"] = "false"
    POSTGRES_USER: NonEmptyStr | None = None
    POSTGRES_PASSWORD: SecretStr | None = None
    POSTGRES_HOST: NonEmptyStr = "localhost"
    POSTGRES_PORT: NonNegativeInt = 5432
    POSTGRES_DB: NonEmptyStr

    @property
    def DATABASE_URL(self) -> URL:
        if self.POSTGRES_PASSWORD is None:
            password = None
        else:
            password = self.POSTGRES_PASSWORD.get_secret_value()

        url = URL.create(
            drivername="postgresql+psycopg",
            username=self.POSTGRES_USER,
            password=password,
            host=self.POSTGRES_HOST,
            port=self.POSTGRES_PORT,
            database=self.POSTGRES_DB,
        )
        return url