wiki:DatabaseProgramming

Version 9 (modified by 231072, 3 days ago) ( diff )

--

Додавање на продукт

Оваа функционалност овозможува додавање на нов продукт во системот.

Функција fn_validate_seller_package

Проверува дали продавачот има право да објавува продукти.

  • Проверува дали корисникот постои и е активен.
  • Проверува дали корисникот е верифициран.
  • Проверува дали корисникот има активен пакет чиј период на важност не е истечен.
CREATE OR REPLACE FUNCTION fn_validate_seller_package(p_seller_id INT)
RETURNS VOID LANGUAGE plpgsql AS $$
begin
	IF NOT EXISTS (
        SELECT 1 FROM appuser WHERE user_id = p_seller_id AND is_active = 1
    ) THEN
        RAISE EXCEPTION 'Sellerot ne postoi ili ne e aktiven';
    END IF;
   
    IF NOT EXISTS (
        SELECT 1 FROM appuser
        WHERE user_id = p_seller_id AND is_verified = 1
    ) THEN
        RAISE EXCEPTION 'Sellerot ne e verificiran';
    END IF;

    IF NOT EXISTS (
        SELECT 1 FROM userpackages
        WHERE seller_id = p_seller_id
          AND CURRENT_TIMESTAMP BETWEEN start_date AND end_date
    ) THEN
        RAISE EXCEPTION 'Sellerot nema aktiven paket (istecen ili ne postoi)';
    END IF;
END;
$$;

Функција fn_validate_product_attribute

Валидира парови атрибут:вредност

  • Проверува дали атрибутот е дефиниран за категоријата во која припаѓа продуктот.
  • Проверува дали внесената вредност е една од дозволените вредности за атрибутот.
CREATE OR REPLACE FUNCTION fn_validate_product_attribute(
    p_category_id           INT,
    p_category_attribute_id INT,
    p_attribute_value       VARCHAR
)
RETURNS VOID LANGUAGE plpgsql AS $$
BEGIN
    IF NOT EXISTS (
        SELECT 1 FROM categoryattributes
        WHERE category_attribute_id = p_category_attribute_id
          AND category_id = p_category_id
    ) THEN
        RAISE EXCEPTION 'Atributot % ne pripagja na kategorijata', p_category_attribute_id;
    END IF;

    IF NOT EXISTS (
        SELECT 1 FROM categoryattributesvalues
        WHERE category_attribute_id = p_category_attribute_id
          AND allowed_value = p_attribute_value
    ) THEN
        RAISE EXCEPTION 'Vrednosta % ne pripagja na atributot', p_attribute_value;
    END IF;
END;
$$;
Note: See TracWiki for help on using the wiki.