|
1 | 1 | """Database connection handling."""
|
2 | 2 |
|
3 |
| -from typing import Optional |
| 3 | +from typing import Any, Dict, Optional |
4 | 4 |
|
5 | 5 | from fastapi import FastAPI
|
6 | 6 | from psycopg_pool import ConnectionPool
|
|
9 | 9 |
|
10 | 10 |
|
11 | 11 | async def connect_to_db(
|
12 |
| - app: FastAPI, settings: Optional[PostgresSettings] = None |
| 12 | + app: FastAPI, |
| 13 | + settings: Optional[PostgresSettings] = None, |
| 14 | + pool_kwargs: Optional[Dict[str, Any]] = None, |
13 | 15 | ) -> None:
|
14 | 16 | """Connect to Database."""
|
15 | 17 | if not settings:
|
16 | 18 | settings = PostgresSettings()
|
17 | 19 |
|
| 20 | + pool_kwargs = ( |
| 21 | + pool_kwargs |
| 22 | + if pool_kwargs is not None |
| 23 | + else {"options": "-c search_path=pgstac,public -c application_name=pgstac"} |
| 24 | + ) |
| 25 | + |
18 | 26 | app.state.dbpool = ConnectionPool(
|
19 | 27 | conninfo=str(settings.database_url),
|
20 | 28 | min_size=settings.db_min_conn_size,
|
21 | 29 | max_size=settings.db_max_conn_size,
|
22 | 30 | max_waiting=settings.db_max_queries,
|
23 | 31 | max_idle=settings.db_max_idle,
|
24 | 32 | num_workers=settings.db_num_workers,
|
25 |
| - kwargs={"options": "-c search_path=pgstac,public -c application_name=pgstac"}, |
| 33 | + kwargs=pool_kwargs, |
26 | 34 | )
|
27 | 35 |
|
28 | 36 | # Make sure the pool is ready
|
|
0 commit comments