diff --git a/.env b/.env index 1d44286e25..1e73d045f4 100644 --- a/.env +++ b/.env @@ -38,6 +38,9 @@ POSTGRES_DB=app POSTGRES_USER=postgres POSTGRES_PASSWORD=changethis +# Database URL for the backend (uses localhost for local dev, overridden in compose.yml for Docker) +DATABASE_URL=postgresql+psycopg://postgres:changethis@localhost:5432/app + SENTRY_DSN= # Configure these with your own Docker registry images diff --git a/backend/app/alembic/env.py b/backend/app/alembic/env.py index 5e2c22f844..7f407fabb9 100755 --- a/backend/app/alembic/env.py +++ b/backend/app/alembic/env.py @@ -31,7 +31,7 @@ def get_url(): - return str(settings.SQLALCHEMY_DATABASE_URI) + return str(settings.DATABASE_URL) def run_migrations_offline(): diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 650b9f7910..49a70aa3d6 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -50,23 +50,7 @@ def all_cors_origins(self) -> list[str]: PROJECT_NAME: str SENTRY_DSN: HttpUrl | None = None - POSTGRES_SERVER: str - POSTGRES_PORT: int = 5432 - POSTGRES_USER: str - POSTGRES_PASSWORD: str = "" - POSTGRES_DB: str = "" - - @computed_field # type: ignore[prop-decorator] - @property - def SQLALCHEMY_DATABASE_URI(self) -> PostgresDsn: - return PostgresDsn.build( - scheme="postgresql+psycopg", - username=self.POSTGRES_USER, - password=self.POSTGRES_PASSWORD, - host=self.POSTGRES_SERVER, - port=self.POSTGRES_PORT, - path=self.POSTGRES_DB, - ) + DATABASE_URL: PostgresDsn SMTP_TLS: bool = True SMTP_SSL: bool = False @@ -108,7 +92,6 @@ def _check_default_secret(self, var_name: str, value: str | None) -> None: @model_validator(mode="after") def _enforce_non_default_secrets(self) -> Self: self._check_default_secret("SECRET_KEY", self.SECRET_KEY) - self._check_default_secret("POSTGRES_PASSWORD", self.POSTGRES_PASSWORD) self._check_default_secret( "FIRST_SUPERUSER_PASSWORD", self.FIRST_SUPERUSER_PASSWORD ) diff --git a/backend/app/core/db.py b/backend/app/core/db.py index ba991fb36d..f19ac0d3bf 100644 --- a/backend/app/core/db.py +++ b/backend/app/core/db.py @@ -4,7 +4,7 @@ from app.core.config import settings from app.models import User, UserCreate -engine = create_engine(str(settings.SQLALCHEMY_DATABASE_URI)) +engine = create_engine(str(settings.DATABASE_URL)) # make sure all SQLModel models are imported (app.models) before initializing DB diff --git a/compose.yml b/compose.yml index 2488fc007b..870a8bc3c3 100644 --- a/compose.yml +++ b/compose.yml @@ -69,11 +69,7 @@ services: - SMTP_USER=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} - EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL} - - POSTGRES_SERVER=db - - POSTGRES_PORT=${POSTGRES_PORT} - - POSTGRES_DB=${POSTGRES_DB} - - POSTGRES_USER=${POSTGRES_USER?Variable not set} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set} + - DATABASE_URL=postgresql+psycopg://${POSTGRES_USER?Variable not set}:${POSTGRES_PASSWORD?Variable not set}@db:${POSTGRES_PORT}/${POSTGRES_DB} - SENTRY_DSN=${SENTRY_DSN} backend: @@ -102,11 +98,7 @@ services: - SMTP_USER=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} - EMAILS_FROM_EMAIL=${EMAILS_FROM_EMAIL} - - POSTGRES_SERVER=db - - POSTGRES_PORT=${POSTGRES_PORT} - - POSTGRES_DB=${POSTGRES_DB} - - POSTGRES_USER=${POSTGRES_USER?Variable not set} - - POSTGRES_PASSWORD=${POSTGRES_PASSWORD?Variable not set} + - DATABASE_URL=postgresql+psycopg://${POSTGRES_USER?Variable not set}:${POSTGRES_PASSWORD?Variable not set}@db:${POSTGRES_PORT}/${POSTGRES_DB} - SENTRY_DSN=${SENTRY_DSN} healthcheck: