Files
syncio/sql/nightly_stt_medicalhistory_schedule.sql
2026-04-16 17:57:58 +09:00

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);