1717branch_labels : Union [str , Sequence [str ], None ] = None
1818depends_on : Union [str , Sequence [str ], None ] = None
1919REFRESH_FUNCTION_NAME = "refresh_pygeoapi_materialized_views"
20- REFRESH_JOB_NAME = "refresh_pygeoapi_matviews_nightly"
21- REFRESH_SCHEDULE = "0 3 * * *"
2220
2321THING_COLLECTIONS = [
2422 ("water_wells" , "water well" ),
@@ -231,68 +229,6 @@ def _create_refresh_function() -> str:
231229 """
232230
233231
234- def _schedule_refresh_job () -> str :
235- return f"""
236- DO $do$
237- BEGIN
238- BEGIN
239- -- Avoid direct SELECT on cron.job because managed Postgres
240- -- environments may deny access to the cron schema table.
241- PERFORM cron.unschedule('{ REFRESH_JOB_NAME } ');
242- EXCEPTION
243- WHEN undefined_function THEN
244- NULL;
245- WHEN invalid_parameter_value THEN
246- NULL;
247- WHEN internal_error THEN
248- -- Some pg_cron builds raise internal_error when the named
249- -- job does not exist. Treat this as already-unscheduled.
250- NULL;
251- WHEN insufficient_privilege THEN
252- RAISE NOTICE
253- 'Skipping pg_cron unschedule for % due to insufficient privileges.',
254- '{ REFRESH_JOB_NAME } ';
255- RETURN;
256- END;
257-
258- PERFORM cron.schedule(
259- '{ REFRESH_JOB_NAME } ',
260- '{ REFRESH_SCHEDULE } ',
261- $cmd$SELECT public.{ REFRESH_FUNCTION_NAME } ();$cmd$
262- );
263- EXCEPTION
264- WHEN insufficient_privilege THEN
265- RAISE NOTICE
266- 'Skipping pg_cron schedule for % due to insufficient privileges.',
267- '{ REFRESH_JOB_NAME } ';
268- END
269- $do$;
270- """
271-
272-
273- def _unschedule_refresh_job () -> str :
274- return f"""
275- DO $do$
276- BEGIN
277- BEGIN
278- PERFORM cron.unschedule('{ REFRESH_JOB_NAME } ');
279- EXCEPTION
280- WHEN undefined_function THEN
281- NULL;
282- WHEN invalid_parameter_value THEN
283- NULL;
284- WHEN internal_error THEN
285- NULL;
286- WHEN insufficient_privilege THEN
287- RAISE NOTICE
288- 'Skipping pg_cron unschedule for % due to insufficient privileges.',
289- '{ REFRESH_JOB_NAME } ';
290- END;
291- END
292- $do$;
293- """
294-
295-
296232def upgrade () -> None :
297233 bind = op .get_bind ()
298234 inspector = inspect (bind )
@@ -307,16 +243,6 @@ def upgrade() -> None:
307243 f"tables are missing: { missing_tables_str } "
308244 )
309245
310- pg_cron_available = bind .execute (
311- text (
312- "SELECT EXISTS ("
313- "SELECT 1 FROM pg_available_extensions WHERE name = 'pg_cron'"
314- ")"
315- )
316- ).scalar ()
317- if pg_cron_available :
318- op .execute (text ("CREATE EXTENSION IF NOT EXISTS pg_cron" ))
319-
320246 for view_id , thing_type in THING_COLLECTIONS :
321247 safe_view_id = _safe_view_id (view_id )
322248 op .execute (text (f"DROP VIEW IF EXISTS ogc_{ safe_view_id } " ))
@@ -360,21 +286,9 @@ def upgrade() -> None:
360286 _create_matview_indexes ()
361287
362288 op .execute (text (_create_refresh_function ()))
363- if pg_cron_available :
364- op .execute (text (_schedule_refresh_job ()))
365289
366290
367291def downgrade () -> None :
368- bind = op .get_bind ()
369- pg_cron_available = bind .execute (
370- text (
371- "SELECT EXISTS ("
372- "SELECT 1 FROM pg_available_extensions WHERE name = 'pg_cron'"
373- ")"
374- )
375- ).scalar ()
376- if pg_cron_available :
377- op .execute (text (_unschedule_refresh_job ()))
378292 op .execute (text (f"DROP FUNCTION IF EXISTS public.{ REFRESH_FUNCTION_NAME } ()" ))
379293 _drop_view_or_materialized_view ("ogc_avg_tds_wells" )
380294 _drop_view_or_materialized_view ("ogc_latest_depth_to_water_wells" )
0 commit comments