|
1 | 1 | import os |
2 | 2 | import typing |
3 | 3 | from datetime import datetime |
| 4 | +from urllib.parse import quote_plus |
4 | 5 |
|
5 | 6 | from sqlmodel import Field, SQLModel, create_engine |
6 | 7 |
|
7 | | -POSTGRES_USERNAME = os.environ.get("POSTGRES_USERNAME") |
8 | | -POSTGRES_PASSWORD = os.environ.get("POSTGRES_PASSWORD") |
9 | | -POSTGRES_HOST = os.environ.get("POSTGRES_HOST") |
10 | | -POSTGRES_DATABASE = os.environ.get("POSTGRES_DATABASE") |
11 | | -POSTGRES_PORT = os.environ.get("POSTGRES_PORT", 5432) |
12 | | -POSTGRES_SSL = os.environ.get("POSTGRES_SSL") |
13 | | - |
14 | | -sql_url = f"postgresql://{POSTGRES_USERNAME}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" |
15 | | -if POSTGRES_SSL: |
16 | | - sql_url = f"{sql_url}?sslmode={POSTGRES_SSL}" |
| 8 | +sql_url = "" |
| 9 | +if os.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING"): |
| 10 | + env_connection_string = os.getenv("AZURE_POSTGRESQL_CONNECTIONSTRING") |
| 11 | + |
| 12 | + # Parse the connection string |
| 13 | + details = dict(item.split('=') for item in env_connection_string.split()) |
| 14 | + |
| 15 | + # Properly format the URL for SQLAlchemy |
| 16 | + sql_url = ( |
| 17 | + f"postgresql://{quote_plus(details['user'])}:{quote_plus(details['password'])}" |
| 18 | + f"@{details['host']}:{details['port']}/{details['dbname']}?sslmode={details['sslmode']}" |
| 19 | + ) |
| 20 | + |
| 21 | +else: |
| 22 | + POSTGRES_USERNAME = os.environ.get("DBUSER") |
| 23 | + POSTGRES_PASSWORD = os.environ.get("DBPASS") |
| 24 | + POSTGRES_HOST = os.environ.get("DBHOST") |
| 25 | + POSTGRES_DATABASE = os.environ.get("DBNAME") |
| 26 | + POSTGRES_PORT = os.environ.get("DBPORT", 5432) |
| 27 | + POSTGRES_SSL = os.environ.get("DBSSL") |
| 28 | + |
| 29 | + sql_url = f"postgresql://{POSTGRES_USERNAME}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{POSTGRES_DATABASE}" |
| 30 | + if POSTGRES_SSL: |
| 31 | + sql_url = f"{sql_url}?sslmode={POSTGRES_SSL}" |
17 | 32 |
|
18 | 33 | engine = create_engine(sql_url) |
19 | 34 |
|
|
0 commit comments