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}