authen
.public
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
sp_commit_avail_state
Parameters
Name
Type
Mode
i_trace_id
uuid
IN
Definition
DECLARE v_interface_code text; v_property_id uuid; v_state_rows jsonb; v_rows int := 0; BEGIN SELECT l.interface_code, (l.params->>'property_id')::uuid, (l.metadata->'state_rows') INTO v_interface_code, v_property_id, v_state_rows FROM public.intf_sync_channel_logs l WHERE l.trace_id = i_trace_id ORDER BY l.id DESC LIMIT 1; IF v_interface_code IS NULL OR v_property_id IS NULL OR v_state_rows IS NULL OR jsonb_typeof(v_state_rows) <> 'array' OR jsonb_array_length(v_state_rows) = 0 THEN RETURN 0; END IF; -- Commit availability state -- state_rows format: [{room_type_id, adate, availability, channel_code}, ...] INSERT INTO public.intf_rate_state( interface_code, property_id, rate_plan_id, rate_date, availability, updated_at ) SELECT v_interface_code, v_property_id, x.room_type_id, x.adate, x.availability, now() FROM jsonb_to_recordset(v_state_rows) AS x( room_type_id text, adate date, availability int, channel_code text ) ON CONFLICT (interface_code, property_id, rate_plan_id, rate_date) DO UPDATE SET availability = EXCLUDED.availability, updated_at = now(); GET DIAGNOSTICS v_rows = ROW_COUNT; RETURN v_rows; END;