VvebOIDC/admin/sql/pgsql/vendor.sql

146 lines
2.3 KiB
SQL

-- Vendors
-- get one vendor
CREATE PROCEDURE get(
IN vendor_id INT,
IN slug CHAR,
OUT fetch_row,
)
BEGIN
-- vendor
SELECT *
FROM vendor as _ -- (underscore) _ means that data will be kept in main array
WHERE 1 = 1
@IF isset(:vendor_id)
THEN
AND vendor_id = :vendor_id
END @IF
@IF isset(:slug)
THEN
AND slug = :slug
END @IF
LIMIT 1;
-- SELECT *,vendor_option_id as _
-- FROM vendor_option WHERE vendor_id = :vendor_id;
--@EACH(vendor_option, vendor_option_value)
-- SELECT *, vendor_option_value_id as _ FROM vendor_option_value pov
-- WHERE vendor_option_id = :vendor_option[vendor_option_id];
END
-- Edit vendor
CREATE PROCEDURE edit(
IN vendor ARRAY,
IN vendor_id INT,
OUT affected_rows
)
BEGIN
-- SELECT * FROM vendor_option WHERE vendor_id = :vendor_id;
-- allow only table fields and set defaults for missing values
@FILTER(:vendor, vendor)
UPDATE vendor
SET @LIST(:vendor)
WHERE vendor_id = :vendor_id
END
-- Add new vendor
CREATE PROCEDURE add(
IN vendor ARRAY,
OUT fetch_one
OUT insert_id
)
BEGIN
-- allow only table fields and set defaults for missing values
:vendor = @FILTER(:vendor, vendor)
INSERT INTO vendor
( @KEYS(:vendor) )
VALUES ( :vendor ) RETURNING vendor_id;
INSERT INTO vendor_to_site
( vendor_id, site_id )
VALUES ( @result.vendor, :site_id );
END
-- get all vendors
CREATE PROCEDURE getAll(
-- variables
IN language_id INT,
IN user_group_id INT,
IN site_id INT,
IN search CHAR,
-- pagination
IN start INT,
IN limit INT,
-- return array of vendors for vendors query
OUT fetch_all,
-- return vendors count for count query
OUT fetch_one,
)
BEGIN
SELECT * FROM vendor
LEFT JOIN vendor_to_site p2s ON (vendor.vendor_id = p2s.vendor_id)
WHERE p2s.site_id = :site_id
@IF isset(:search)
THEN
AND name LIKE :search
END @IF
@SQL_LIMIT(:start, :limit);
SELECT count(*) FROM (
@SQL_COUNT(vendor.vendor_id, vendor) -- this takes previous query removes limit and replaces select columns with parameter product_id
) as count;
END
-- delete vendor
CREATE PROCEDURE delete(
IN vendor_id ARRAY,
OUT affected_rows
)
BEGIN
DELETE FROM vendor WHERE vendor_id IN (:vendor_id)
END