Skip to content

Commit c215eb4

Browse files
committed
♻️ Migrate to DATABASE_URL instead of separate variables
Shortcake-Parent: master
1 parent f6c2e53 commit c215eb4

File tree

5 files changed

+8
-30
lines changed

5 files changed

+8
-30
lines changed

.env

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ POSTGRES_DB=app
3838
POSTGRES_USER=postgres
3939
POSTGRES_PASSWORD=changethis
4040

41+
# Database URL for the backend (uses localhost for local dev, overridden in compose.yml for Docker)
42+
DATABASE_URL=postgresql+psycopg://postgres:changethis@localhost:5432/app
43+
4144
SENTRY_DSN=
4245

4346
# Configure these with your own Docker registry images

backend/app/alembic/env.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232

3333
def get_url():
34-
return str(settings.SQLALCHEMY_DATABASE_URI)
34+
return str(settings.DATABASE_URL)
3535

3636

3737
def run_migrations_offline():

backend/app/core/config.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,7 @@ def all_cors_origins(self) -> list[str]:
5050

5151
PROJECT_NAME: str
5252
SENTRY_DSN: HttpUrl | None = None
53-
POSTGRES_SERVER: str
54-
POSTGRES_PORT: int = 5432
55-
POSTGRES_USER: str
56-
POSTGRES_PASSWORD: str = ""
57-
POSTGRES_DB: str = ""
58-
59-
@computed_field # type: ignore[prop-decorator]
60-
@property
61-
def SQLALCHEMY_DATABASE_URI(self) -> PostgresDsn:
62-
return PostgresDsn.build(
63-
scheme="postgresql+psycopg",
64-
username=self.POSTGRES_USER,
65-
password=self.POSTGRES_PASSWORD,
66-
host=self.POSTGRES_SERVER,
67-
port=self.POSTGRES_PORT,
68-
path=self.POSTGRES_DB,
69-
)
53+
DATABASE_URL: PostgresDsn
7054

7155
SMTP_TLS: bool = True
7256
SMTP_SSL: bool = False
@@ -108,7 +92,6 @@ def _check_default_secret(self, var_name: str, value: str | None) -> None:
10892
@model_validator(mode="after")
10993
def _enforce_non_default_secrets(self) -> Self:
11094
self._check_default_secret("SECRET_KEY", self.SECRET_KEY)
111-
self._check_default_secret("POSTGRES_PASSWORD", self.POSTGRES_PASSWORD)
11295
self._check_default_secret(
11396
"FIRST_SUPERUSER_PASSWORD", self.FIRST_SUPERUSER_PASSWORD
11497
)

backend/app/core/db.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from app.core.config import settings
55
from app.models import User, UserCreate
66

7-
engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI))
7+
engine = create_engine(str(settings.DATABASE_URL))
88

99

1010
# make sure all SQLModel models are imported (app.models) before initializing DB

compose.yml

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,7 @@ services:
6969
- SMTP_USER=${SMTP_USER}
7070
- SMTP_PASSWORD=${SMTP_PASSWORD}
7171
- EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL}
72-
- POSTGRES_SERVER=db
73-
- POSTGRES_PORT=${POSTGRES_PORT}
74-
- POSTGRES_DB=${POSTGRES_DB}
75-
- POSTGRES_USER=${POSTGRES_USER?Variable not set}
76-
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set}
72+
- DATABASE_URL=postgresql+psycopg://${POSTGRES_USER?Variable not set}:${POSTGRES_PASSWORD?Variable not set}@db:${POSTGRES_PORT}/${POSTGRES_DB}
7773
- SENTRY_DSN=${SENTRY_DSN}
7874

7975
backend:
@@ -102,11 +98,7 @@ services:
10298
- SMTP_USER=${SMTP_USER}
10399
- SMTP_PASSWORD=${SMTP_PASSWORD}
104100
- EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL}
105-
- POSTGRES_SERVER=db
106-
- POSTGRES_PORT=${POSTGRES_PORT}
107-
- POSTGRES_DB=${POSTGRES_DB}
108-
- POSTGRES_USER=${POSTGRES_USER?Variable not set}
109-
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set}
101+
- DATABASE_URL=postgresql+psycopg://${POSTGRES_USER?Variable not set}:${POSTGRES_PASSWORD?Variable not set}@db:${POSTGRES_PORT}/${POSTGRES_DB}
110102
- SENTRY_DSN=${SENTRY_DSN}
111103

112104
healthcheck:

0 commit comments

Comments
 (0)