diff --git a/CHANGES.md b/CHANGES.md index 361ed98..37dea77 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,10 @@ # Release Notes +## Unrelease + +* add `pgstac_dependency` attribute in `MosaicTilerFactory` (defaults to `dependencies.PgSTACParams`) +* add database's `pool` check in startup event + ## 0.8.0 (2023-10-06) * update titiler requirement to `>=0.14.0,<0.15` diff --git a/titiler/pgstac/db.py b/titiler/pgstac/db.py index 7c2da14..8566d91 100644 --- a/titiler/pgstac/db.py +++ b/titiler/pgstac/db.py @@ -25,6 +25,10 @@ async def connect_to_db( kwargs={"options": "-c search_path=pgstac,public -c application_name=pgstac"}, ) + # Make sure the pool is ready + # ref: https://www.psycopg.org/psycopg3/docs/advanced/pool.html#pool-startup-check + app.state.dbpool.wait() + async def close_db_connection(app: FastAPI) -> None: """Close Pool.""" diff --git a/titiler/pgstac/factory.py b/titiler/pgstac/factory.py index 423aac7..815beec 100644 --- a/titiler/pgstac/factory.py +++ b/titiler/pgstac/factory.py @@ -112,6 +112,7 @@ class MosaicTilerFactory(BaseTilerFactory): pixel_selection_dependency: Callable[..., MosaicMethodBase] = PixelSelectionParams + pgstac_dependency: Type[DefaultDependency] = PgSTACParams backend_dependency: Type[DefaultDependency] = BackendParams # Add/Remove some endpoints @@ -217,7 +218,7 @@ def tile( color_formula=Depends(ColorFormulaParams), colormap=Depends(self.colormap_dependency), render_params=Depends(self.render_dependency), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), env=Depends(self.environment_dependency), @@ -329,7 +330,7 @@ def tilejson( color_formula=Depends(ColorFormulaParams), colormap=Depends(self.colormap_dependency), render_params=Depends(self.render_dependency), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), ): @@ -431,7 +432,7 @@ def map_viewer( color_formula=Depends(ColorFormulaParams), colormap=Depends(self.colormap_dependency), render_params=Depends(self.render_dependency), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), env=Depends(self.environment_dependency), @@ -523,7 +524,7 @@ def wmts( self.rescale_dependency, self.colormap_dependency, self.render_dependency, - PgSTACParams, + self.pgstac_dependency, self.reader_dependency, self.backend_dependency, ] @@ -639,7 +640,7 @@ def assets_for_tile( Literal[tuple(self.supported_tms.list())], f"Identifier selecting one of the TileMatrixSetId supported (default: '{self.default_tms}')", ] = self.default_tms, - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), ): @@ -663,7 +664,7 @@ def assets_for_point( lat: Annotated[float, Path(description="Latitude")], searchid=Depends(self.path_dependency), coord_crs=Depends(CoordCRSParams), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), ): @@ -754,7 +755,7 @@ def register_search( self.rescale_dependency, self.colormap_dependency, self.render_dependency, - PgSTACParams, + self.pgstac_dependency, self.reader_dependency, self.backend_dependency, ] @@ -1057,7 +1058,7 @@ def geojson_statistics( pixel_selection=Depends(self.pixel_selection_dependency), stats_params=Depends(self.stats_dependency), histogram_params=Depends(self.histogram_dependency), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), env=Depends(self.environment_dependency), @@ -1137,7 +1138,7 @@ def bbox_image( color_formula=Depends(ColorFormulaParams), colormap=Depends(self.colormap_dependency), render_params=Depends(self.render_dependency), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), env=Depends(self.environment_dependency), @@ -1212,7 +1213,7 @@ def feature_image( color_formula=Depends(ColorFormulaParams), colormap=Depends(self.colormap_dependency), render_params=Depends(self.render_dependency), - pgstac_params: PgSTACParams = Depends(), + pgstac_params=Depends(self.pgstac_dependency), backend_params=Depends(self.backend_dependency), reader_params=Depends(self.reader_dependency), env=Depends(self.environment_dependency),