INSERT INTO mall_schedule_slot (store_id, slot_date, slot_label, start_time, end_time, capacity, booked, surge_multiplier, active)
VALUES (#{storeId}, #{slotDate}, #{slotLabel}, #{startTime}, #{endTime}, COALESCE(#{capacity},20),
COALESCE(#{booked},0), COALESCE(#{surgeMultiplier},1.00), COALESCE(#{active},TRUE))
UPDATE mall_schedule_slot SET booked = COALESCE(booked,0) + 1 WHERE id = #{id} AND booked < capacity
UPDATE mall_schedule_slot SET active = #{active} WHERE id = #{id}
INSERT INTO mall_holiday (holiday_date, name, blocked, surge_multiplier, store_id)
VALUES (#{holidayDate}, #{name}, COALESCE(#{blocked},FALSE), COALESCE(#{surgeMultiplier},1.00), #{storeId})
ON CONFLICT (holiday_date, store_id) DO UPDATE SET
name = EXCLUDED.name, blocked = EXCLUDED.blocked, surge_multiplier = EXCLUDED.surge_multiplier
UPDATE mall_holiday SET blocked = #{blocked} WHERE id = #{id}