@@ -134,77 +134,6 @@ def register_extensions(cursor) -> None:
134134 cursor .execute (sql .SQL ("CREATE EXTENSION IF NOT EXISTS postgis;" ))
135135
136136
137- def create_dashboard_schema (cursor , username : str ) -> None :
138- """Create custom schema for dashboard-specific functions."""
139- cursor .execute (
140- sql .SQL (
141- "CREATE SCHEMA IF NOT EXISTS dashboard;"
142- "GRANT ALL ON SCHEMA dashboard TO {username};"
143- "ALTER ROLE {username} SET SEARCH_PATH TO dashboard, pgstac, public;"
144- ).format (username = sql .Identifier (username ))
145- )
146-
147-
148- def create_update_default_summaries_function (cursor ) -> None :
149- """Create function to update collection summary metadata about default item assets."""
150-
151- update_default_summary_sql = """
152- CREATE OR REPLACE FUNCTION dashboard.update_default_summaries(_collection_id text) RETURNS VOID AS $$
153- WITH coll_item_cte AS (
154- SELECT jsonb_build_object(
155- 'summaries',
156- jsonb_build_object(
157- 'datetime', (
158- CASE
159- WHEN (collections."content"->>'dashboard:is_periodic')::boolean
160- THEN (to_jsonb(array[
161- to_char(min(datetime) at time zone 'Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"'),
162- to_char(max(datetime) at time zone 'Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')]))
163- ELSE jsonb_agg(distinct to_char(datetime at time zone 'Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"'))
164- END
165- ),
166- 'cog_default', (
167- CASE
168- WHEN collections."content"->'item_assets' ? 'cog_default'
169- THEN jsonb_build_object(
170- 'min', min((items."content"->'assets'->'cog_default'->'raster:bands'-> 0 ->'statistics'->>'minimum')::float),
171- 'max', max((items."content"->'assets'->'cog_default'->'raster:bands'-> 0 ->'statistics'->>'maximum')::float)
172- )
173- ELSE NULL
174- END
175- )
176- )
177- ) summaries,
178- collections.id coll_id
179- FROM items
180- JOIN collections on items.collection = collections.id
181- WHERE collections.id = _collection_id
182- GROUP BY collections."content" , collections.id
183- )
184- UPDATE collections SET "content" = "content" || coll_item_cte.summaries
185- FROM coll_item_cte
186- WHERE collections.id = coll_item_cte.coll_id;
187- $$ LANGUAGE SQL SET SEARCH_PATH TO dashboard, pgstac, public;
188- """
189-
190- cursor .execute (sql .SQL (update_default_summary_sql ))
191-
192-
193- def create_update_all_default_summaries_function (cursor ) -> None :
194- """Create function to update default summaries for all collections with required properties"""
195-
196- update_all_default_summaries_sql = """
197- CREATE OR REPLACE FUNCTION dashboard.update_all_default_summaries() RETURNS VOID AS $$
198- SELECT
199- update_default_summaries(id)
200- FROM collections
201- WHERE collections."content" ?| array['item_assets', 'dashboard:is_periodic'];
202- $$ LANGUAGE SQL SET SEARCH_PATH TO dashboard, pgstac, public;
203- """
204-
205- cursor .execute (sql .SQL (update_all_default_summaries_sql ))
206-
207-
208137def handler (event , context ):
209138 """Lambda Handler."""
210139 print (f"Handling { event } " )
@@ -297,16 +226,6 @@ def handler(event, context):
297226 )
298227 )
299228
300- # As admin, create custom dashboard schema and functions and grant privileges to bootstrapped user
301- with psycopg .connect (stac_db_conninfo , autocommit = True ) as conn :
302- with conn .cursor () as cur :
303- print ("Creating dashboard schema..." )
304- create_dashboard_schema (cursor = cur , username = user_params ["username" ])
305-
306- print ("Creating update_default_summaries functions..." )
307- create_update_default_summaries_function (cursor = cur )
308- create_update_all_default_summaries_function (cursor = cur )
309-
310229 except Exception as e :
311230 print (f"Unable to bootstrap database with exception={ e } " )
312231 send (event , context , "FAILED" , {"message" : str (e )})
0 commit comments