Changes between Version 11 and Version 12 of DatabaseProgramming


Ignore:
Timestamp:
06/14/26 15:58:31 (3 days ago)
Author:
231072
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v11 v12  
    223223
    224224
    225 
     225= Процедура add_to_cart
     226
     227Додава продукт во кошничката.
     228
     229{{{
     230CREATE OR REPLACE PROCEDURE add_to_cart(
     231    p_cart_id    INT,
     232    p_product_id INT,
     233    p_quantity   INT
     234)
     235LANGUAGE plpgsql
     236AS $$
     237DECLARE
     238    v_price NUMERIC;
     239BEGIN
     240    IF p_quantity <= 0 THEN
     241        RAISE EXCEPTION 'Kolicinata mora da e pogolema od 0';
     242    END IF;
     243
     244    SELECT price INTO v_price
     245    FROM product
     246    WHERE product_id = p_product_id AND is_active = 1;
     247
     248    IF NOT FOUND THEN
     249        RAISE EXCEPTION 'Produktot ne postoi ili ne e aktiven';
     250    END IF;
     251   
     252   PERFORM fn_validate_product_stock(p_product_id, p_quantity);
     253
     254    INSERT INTO cartitems (cart_id, product_id, quantity, price_at_time)
     255    VALUES (p_cart_id, p_product_id, p_quantity, v_price);
     256   
     257   --azhurirame total price
     258   UPDATE cart
     259    SET total_price = fn_calc_cart_total(p_cart_id)
     260    WHERE cart_id = p_cart_id;
     261END;
     262$$;
     263}}}
     264
     265= Процедура remove_from_cart
     266
     267Отстранува продукт од кошничката.
     268
     269{{{
     270CREATE OR REPLACE PROCEDURE remove_from_cart(
     271    p_cart_id    INT,
     272    p_product_id INT
     273)
     274LANGUAGE plpgsql
     275AS $$
     276BEGIN
     277    DELETE FROM cartitems
     278    WHERE cart_id = p_cart_id
     279      AND product_id = p_product_id;
     280
     281    IF NOT FOUND THEN
     282        RAISE EXCEPTION 'Produktot ne postoi vo kosnickata';
     283    END IF;
     284   
     285   --azhurirame total price
     286   UPDATE cart
     287    SET total_price = fn_calc_cart_total(p_cart_id)
     288    WHERE cart_id = p_cart_id;
     289END;
     290$$;
     291}}}
     292
     293= Процедура update_cart_quantity
     294
     295Ја менува количината на постоечки продукт во кошничката.
     296
     297{{{
     298CREATE OR REPLACE PROCEDURE update_cart_quantity(
     299    p_cart_id    INT,
     300    p_product_id INT,
     301    p_quantity   INT
     302)
     303LANGUAGE plpgsql
     304AS $$
     305DECLARE
     306    v_stock INT;
     307BEGIN
     308    IF p_quantity <= 0 THEN
     309        RAISE EXCEPTION 'Kolicinata mora da e pogolema od 0';
     310    END IF;
     311   
     312   PERFORM fn_validate_product_stock(p_product_id, p_quantity);
     313
     314    UPDATE cartitems
     315    SET quantity = p_quantity
     316    WHERE cart_id = p_cart_id
     317      AND product_id = p_product_id;
     318     
     319    --azhurirame total price
     320    UPDATE cart
     321    SET total_price = fn_calc_cart_total(p_cart_id)
     322    WHERE cart_id = p_cart_id;
     323END;
     324$$;
     325}}}
     326
     327
     328