210 lines
3.9 KiB
SQL
210 lines
3.9 KiB
SQL
-- Region group
|
|
|
|
-- get all return region groups
|
|
|
|
PROCEDURE getAll(
|
|
IN language_id INT,
|
|
IN start INT,
|
|
IN limit INT,
|
|
OUT fetch_all,
|
|
OUT fetch_one,
|
|
)
|
|
BEGIN
|
|
-- region_group
|
|
SELECT *
|
|
FROM region_group WHERE 1 = 1
|
|
|
|
@IF !empty(:limit)
|
|
THEN
|
|
@SQL_LIMIT(:start, :limit)
|
|
END @IF
|
|
|
|
;
|
|
|
|
SELECT count(*) FROM (
|
|
|
|
@SQL_COUNT(region_group.region_group_id, region_group) -- this takes previous query removes limit and replaces select columns with parameter product_id
|
|
|
|
) as count;
|
|
|
|
END
|
|
|
|
|
|
-- get regions for region group
|
|
|
|
PROCEDURE getRegions(
|
|
IN region_group_id INT,
|
|
IN country_id INT,
|
|
IN start INT,
|
|
IN limit INT,
|
|
OUT fetch_all,
|
|
OUT fetch_one,
|
|
)
|
|
BEGIN
|
|
-- region
|
|
SELECT regions.*,country.name as country, region.name as region
|
|
FROM region_to_region_group AS regions
|
|
LEFT JOIN region ON regions.region_id = region.region_id
|
|
LEFT JOIN country ON regions.country_id = country.country_id
|
|
|
|
WHERE regions.region_group_id = :region_group_id
|
|
|
|
|
|
@IF !empty(:country_id)
|
|
THEN
|
|
AND region.country_id = :country_id
|
|
END @IF
|
|
|
|
@IF !empty(:limit)
|
|
THEN
|
|
@SQL_LIMIT(:start, :limit)
|
|
END @IF
|
|
;
|
|
|
|
SELECT count(*) FROM (
|
|
|
|
@SQL_COUNT(region.region_id, region) -- this takes previous query removes limit and replaces select columns with parameter product_id
|
|
|
|
) as count;
|
|
END
|
|
|
|
-- check region for region group
|
|
|
|
PROCEDURE isRegion(
|
|
IN region_group_id INT,
|
|
IN country_id INT,
|
|
IN region_id INT,
|
|
IN start INT,
|
|
IN limit INT,
|
|
OUT fetch_all,
|
|
OUT fetch_one,
|
|
)
|
|
BEGIN
|
|
-- region
|
|
SELECT *
|
|
FROM region_to_region_group AS regions
|
|
|
|
WHERE 1 = 1
|
|
|
|
|
|
@IF !empty(:region_group_id)
|
|
THEN
|
|
AND regions.region_group_id = :region_group_id
|
|
END @IF
|
|
|
|
@IF !empty(:country_id)
|
|
THEN
|
|
AND regions.country_id = :country_id
|
|
END @IF
|
|
|
|
@IF !empty(:region_id)
|
|
THEN
|
|
AND (regions.region_id = :region_id OR regions.region_id = 0)
|
|
END @IF
|
|
|
|
@IF !empty(:limit)
|
|
THEN
|
|
@SQL_LIMIT(:start, :limit)
|
|
END @IF
|
|
;
|
|
|
|
SELECT count(*) FROM (
|
|
|
|
@SQL_COUNT(regions.region_id, regions) -- this takes previous query removes limit and replaces select columns with parameter product_id
|
|
|
|
) as count;
|
|
END
|
|
|
|
-- add region_group
|
|
|
|
PROCEDURE addRegions(
|
|
IN region_to_region_group ARRAY,
|
|
IN region_group_id INT,
|
|
OUT insert_id
|
|
)
|
|
BEGIN
|
|
-- BEGIN transaction;
|
|
|
|
DELETE FROM region_to_region_group WHERE region_group_id = :region_group_id;
|
|
|
|
-- allow only table fields and set defaults for missing values
|
|
:region_to_region_group_data = @FILTER(:region_to_region_group, region_to_region_group)
|
|
|
|
|
|
@EACH(:region_to_region_group_data)
|
|
INSERT INTO region_to_region_group
|
|
|
|
( @KEYS(:each), region_group_id )
|
|
|
|
VALUES ( :each, :region_group_id );
|
|
|
|
-- END transaction;
|
|
|
|
END
|
|
|
|
-- get region_group
|
|
|
|
PROCEDURE get(
|
|
IN region_group_id INT,
|
|
OUT fetch_row,
|
|
)
|
|
BEGIN
|
|
-- region_group
|
|
SELECT *
|
|
FROM region_group as _ WHERE region_group_id = :region_group_id;
|
|
END
|
|
|
|
-- add region group
|
|
|
|
PROCEDURE add(
|
|
IN region_group ARRAY,
|
|
OUT insert_id
|
|
)
|
|
BEGIN
|
|
|
|
-- allow only table fields and set defaults for missing values
|
|
:region_group_data = @FILTER(:region_group, region_group)
|
|
|
|
|
|
INSERT INTO region_group
|
|
|
|
( @KEYS(:region_group_data) )
|
|
|
|
VALUES ( :region_group_data );
|
|
|
|
END
|
|
|
|
-- edit region group
|
|
|
|
CREATE PROCEDURE edit(
|
|
IN region_group ARRAY,
|
|
IN region_group_id INT,
|
|
OUT affected_rows
|
|
)
|
|
BEGIN
|
|
|
|
-- allow only table fields and set defaults for missing values
|
|
@FILTER(:region_group, region_group)
|
|
|
|
UPDATE region_group
|
|
|
|
SET @LIST(:region_group)
|
|
|
|
WHERE region_group_id = :region_group_id
|
|
|
|
|
|
END
|
|
|
|
-- delete region_group
|
|
|
|
PROCEDURE delete(
|
|
IN region_group_id ARRAY,
|
|
OUT affected_rows,
|
|
OUT affected_rows,
|
|
)
|
|
BEGIN
|
|
-- region
|
|
DELETE FROM region_to_region_group WHERE region_group_id IN (:region_group_id);
|
|
DELETE FROM region_group WHERE region_group_id IN (:region_group_id);
|
|
END
|