VvebOIDC/admin/sql/mysqli/attribute_group.sql

140 lines
3.1 KiB
SQL

-- Attributes
-- get all attribute_groups
PROCEDURE getAll(
IN language_id INT,
IN product_id INT,
IN start INT,
IN limit INT,
OUT fetch_all,
OUT fetch_one,
)
BEGIN
-- attribute_group
SELECT attribute_group_content.name, attribute_group_content.name as `group`, attribute_group.*
@IF isset(:product_id)
THEN
,pa.value
END @IF
FROM attribute_group
INNER JOIN attribute_group_content
ON attribute_group_content.attribute_group_id = attribute_group.attribute_group_id AND attribute_group_content.language_id = :language_id
@IF isset(:product_id)
THEN
LEFT JOIN product_attribute_group pa ON attribute_group.attribute_group_id = pa.attribute_group_id
END @IF
WHERE 1 = 1
@IF isset(:product_id)
THEN
AND pa.product_id = :product_id
END @IF
-- limit
@IF isset(:limit)
THEN
@SQL_LIMIT(:start, :limit)
END @IF;
SELECT count(*) FROM (
@SQL_COUNT(attribute_group.attribute_group_id, attribute_group) -- this takes previous query removes limit and replaces select columns with parameter product_id
) as count;
END
-- get attribute_group
PROCEDURE get(
IN attribute_group_id INT,
IN language_id INT,
OUT fetch_row,
)
BEGIN
-- attribute_group
SELECT *
FROM attribute_group as _
INNER JOIN attribute_group_content agc
ON agc.attribute_group_id = _.attribute_group_id AND agc.language_id = :language_id
WHERE _.attribute_group_id = :attribute_group_id;
END
-- add attribute_group
PROCEDURE add(
IN attribute_group ARRAY,
OUT insert_id
)
BEGIN
-- allow only table fields and set defaults for missing values
:attribute_group_data = @FILTER(:attribute_group, attribute_group)
INSERT INTO attribute_group
( @KEYS(:attribute_group_data) )
VALUES ( :attribute_group_data );
:attribute_group_content = @FILTER(:attribute_group, attribute_group_content)
INSERT INTO attribute_group_content
( @KEYS(:attribute_group_content), language_id, attribute_group_id )
VALUES ( :attribute_group_content, :language_id, @result.attribute_group);
END
-- edit attribute_group
CREATE PROCEDURE edit(
IN attribute_group ARRAY,
IN attribute_group_id INT,
OUT affected_rows,
OUT affected_rows
)
BEGIN
-- allow only table fields and set defaults for missing values
:attribute_group_data = @FILTER(:attribute_group, attribute_group)
UPDATE attribute_group
SET @LIST(:attribute_group_data)
WHERE attribute_group_id = :attribute_group_id;
-- allow only table fields and set defaults for missing values
:attribute_group_content = @FILTER(:attribute_group, attribute_group_content)
UPDATE attribute_group_content
SET @LIST(:attribute_group_content)
WHERE attribute_group_id = :attribute_group_id;
END
-- delete attribute_group
PROCEDURE delete(
IN attribute_group_id ARRAY,
OUT affected_rows,
OUT affected_rows,
)
BEGIN
-- attribute_group
DELETE FROM attribute_group_content WHERE attribute_group_id IN (:attribute_group_id);
DELETE FROM attribute_group WHERE attribute_group_id IN (:attribute_group_id);
END