74 lines
2.1 KiB
SQL
74 lines
2.1 KiB
SQL
WITH schedule_payload AS (
|
|
SELECT
|
|
'Nightly stt_MedicalHistory'::text AS name,
|
|
'daily'::text AS schedule_type,
|
|
TRUE AS enabled,
|
|
FALSE AS catch_up_missed_runs,
|
|
'["stt_MedicalHistory"]'::jsonb AS tables_json,
|
|
TRUE AS send_email,
|
|
FALSE AS dry_run,
|
|
NULL::integer AS read_limit,
|
|
NULL::integer AS interval_seconds,
|
|
'02:00:00'::text AS daily_time,
|
|
NULL::timestamp AS start_at,
|
|
CASE
|
|
WHEN localtime < time '02:00:00'
|
|
THEN date_trunc('day', now()) + time '02:00:00'
|
|
ELSE date_trunc('day', now()) + interval '1 day' + time '02:00:00'
|
|
END AS next_run_at
|
|
),
|
|
updated AS (
|
|
UPDATE replicator.migration_schedules AS schedules
|
|
SET
|
|
updated_at = now(),
|
|
schedule_type = payload.schedule_type,
|
|
enabled = payload.enabled,
|
|
catch_up_missed_runs = payload.catch_up_missed_runs,
|
|
tables_json = payload.tables_json,
|
|
send_email = payload.send_email,
|
|
dry_run = payload.dry_run,
|
|
read_limit = payload.read_limit,
|
|
interval_seconds = payload.interval_seconds,
|
|
daily_time = payload.daily_time,
|
|
start_at = payload.start_at,
|
|
next_run_at = payload.next_run_at
|
|
FROM schedule_payload AS payload
|
|
WHERE schedules.name = payload.name
|
|
RETURNING schedules.schedule_id
|
|
)
|
|
INSERT INTO replicator.migration_schedules (
|
|
schedule_id,
|
|
created_at,
|
|
updated_at,
|
|
name,
|
|
schedule_type,
|
|
enabled,
|
|
catch_up_missed_runs,
|
|
tables_json,
|
|
send_email,
|
|
dry_run,
|
|
read_limit,
|
|
interval_seconds,
|
|
daily_time,
|
|
start_at,
|
|
next_run_at
|
|
)
|
|
SELECT
|
|
md5(random()::text || clock_timestamp()::text),
|
|
now(),
|
|
now(),
|
|
payload.name,
|
|
payload.schedule_type,
|
|
payload.enabled,
|
|
payload.catch_up_missed_runs,
|
|
payload.tables_json,
|
|
payload.send_email,
|
|
payload.dry_run,
|
|
payload.read_limit,
|
|
payload.interval_seconds,
|
|
payload.daily_time,
|
|
payload.start_at,
|
|
payload.next_run_at
|
|
FROM schedule_payload AS payload
|
|
WHERE NOT EXISTS (SELECT 1 FROM updated);
|