Changes between Version 7 and Version 8 of DatabaseProgramming


Ignore:
Timestamp:
06/11/26 10:29:29 (5 days ago)
Author:
231035
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v7 v8  
    9999== A review can be made only for a complete booking
    100100{{{
    101 create or replace procedure review_booking(r_booking_id bigint,rating int,comment varchar)
    102 as $$
    103     declare
    104             v_status varchar;
    105         guest_id bigint;
    106         property bigint;
    107     begin
    108         select b.booking_status,b.guest_id,r.property_id
    109         into v_status,guest_id,property
    110         from bookings b
    111         join rooms r on b.room_id = r.room_id
    112         where booking_id = r_booking_id;
    113 
    114 
    115 
    116         if v_status <> 'COMPLETED' then
    117             raise exception  'Can only review completed bookings';
    118         end if;
    119         insert into reviews(booking_id, guest_id, property_id, rating, comment) values
    120                                                                                     (r_booking_id,guest_id,
    121                                                                                     property, review_booking.rating,review_booking.comment);
    122 
    123     end;
    124     $$ language plpgsql;
     101CREATE OR REPLACE PROCEDURE review_booking(
     102    p_booking_id BIGINT,
     103    p_rating INT,
     104    p_comment VARCHAR
     105)
     106LANGUAGE plpgsql
     107AS $$
     108DECLARE
     109    v_status VARCHAR;
     110    v_guest_id BIGINT;
     111    v_property_id BIGINT;
     112BEGIN
     113    SELECT
     114        b.booking_status,
     115        b.guest_id,
     116        r.property_id
     117    INTO
     118        v_status,
     119        v_guest_id,
     120        v_property_id
     121    FROM bookings b
     122    JOIN rooms r ON b.room_id = r.room_id
     123    WHERE b.booking_id = p_booking_id;
     124
     125    IF NOT FOUND THEN
     126        RAISE EXCEPTION 'Booking with id % does not exist.', p_booking_id;
     127    END IF;
     128
     129    IF v_status <> 'COMPLETED' THEN
     130        RAISE EXCEPTION 'Can only review completed bookings.';
     131    END IF;
     132
     133    IF p_rating < 1 OR p_rating > 5 THEN
     134        RAISE EXCEPTION 'Rating must be between 1 and 5.';
     135    END IF;
     136
     137    INSERT INTO reviews (
     138        booking_id,
     139        guest_id,
     140        property_id,
     141        rating,
     142        comment
     143    )
     144    VALUES (
     145        p_booking_id,
     146        v_guest_id,
     147        v_property_id,
     148        p_rating,
     149        p_comment
     150    );
     151END;
     152$$;
    125153}}}
    126154