Skip to content

Commit 0d7df41

Browse files
committed
update config.py, database.py, env.py to support deploy to Render
1 parent 8763fcd commit 0d7df41

3 files changed

Lines changed: 38 additions & 11 deletions

File tree

alembic/env.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,19 @@
1010
# this is the Alembic Config object, which provides
1111
# access to the values within the .ini file in use.
1212
config = context.config
13-
config.set_main_option(
14-
"sqlalchemy.url",
15-
f"postgresql+psycopg2://{settings.database_username}:{settings.database_password}@{settings.database_hostname}:{settings.database_port}/{settings.database_name}",
16-
)
13+
14+
if settings.database_url:
15+
sqlalchemy_url = settings.database_url
16+
else:
17+
sqlalchemy_url = (
18+
f"postgresql+psycopg2://{settings.database_username}:"
19+
f"{settings.database_password}@"
20+
f"{settings.database_hostname}:"
21+
f"{settings.database_port}/"
22+
f"{settings.database_name}"
23+
)
24+
25+
config.set_main_option("sqlalchemy.url", sqlalchemy_url)
1726

1827
# Interpret the config file for Python logging.
1928
# This line sets up loggers basically.

app/config.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
import os
22
from pydantic_settings import BaseSettings
3+
from typing import Optional
34

45

56
class Settings(BaseSettings):
6-
database_username: str
7-
database_password: str
8-
database_hostname: str
9-
database_port: str
10-
database_name: str
7+
# Render / production
8+
database_url: Optional[str] = None
9+
10+
# Local / docker (optional)
11+
database_username: Optional[str] = None
12+
database_password: Optional[str] = None
13+
database_hostname: Optional[str] = None
14+
database_port: Optional[str] = None
15+
database_name: Optional[str] = None
16+
1117
secret_key: str
1218
algorithm: str
1319
access_token_expire_minutes: int

app/database.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,21 @@
33
from sqlalchemy.orm import sessionmaker
44
from .config import settings
55

6-
SQLALCHEMY_DATABASE_URL = f"postgresql://{settings.database_username}:{settings.database_password}@{settings.database_hostname}:{settings.database_port}/{settings.database_name}"
6+
if settings.database_url:
7+
DATABASE_URL = settings.database_url
8+
else:
9+
DATABASE_URL = (
10+
f"postgresql://{settings.database_username}:"
11+
f"{settings.database_password}@"
12+
f"{settings.database_hostname}:"
13+
f"{settings.database_port}/"
14+
f"{settings.database_name}"
15+
)
716

8-
engine = create_engine(SQLALCHEMY_DATABASE_URL)
17+
if not DATABASE_URL:
18+
raise RuntimeError("Database configuration is missing")
19+
20+
engine = create_engine(DATABASE_URL)
921

1022
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
1123

0 commit comments

Comments
 (0)