232 lines
4.6 KiB
SQL
232 lines
4.6 KiB
SQL
-- Sites
|
|
|
|
-- get all sites
|
|
|
|
PROCEDURE getAll(
|
|
IN start INT,
|
|
IN limit INT,
|
|
IN site_id ARRAY,
|
|
|
|
-- return array of sites for sites query
|
|
OUT fetch_all,
|
|
-- return sites count for count query
|
|
OUT fetch_one,
|
|
)
|
|
BEGIN
|
|
-- site
|
|
SELECT *, site_id as array_key
|
|
FROM site
|
|
|
|
WHERE 1 = 1
|
|
|
|
-- site_id
|
|
@IF isset(:site_id) && !empty(:site_id) && is_array(:site_id)
|
|
THEN
|
|
AND site.site_id IN (:site_id)
|
|
END @IF
|
|
|
|
-- limit
|
|
@IF isset(:limit)
|
|
THEN
|
|
@SQL_LIMIT(:start, :limit)
|
|
END @IF;
|
|
|
|
-- SELECT FOUND_ROWS() as count;
|
|
SELECT count(*) FROM (
|
|
|
|
@SQL_COUNT(site.site_id, site) -- this takes previous query removes limit and replaces select columns with parameter product_id
|
|
|
|
) as count;
|
|
END
|
|
|
|
-- get data
|
|
|
|
PROCEDURE getData(
|
|
IN site_id INT,
|
|
IN country_id INT,
|
|
IN language_id INT,
|
|
OUT fetch_all,
|
|
OUT fetch_all,
|
|
OUT fetch_all,
|
|
OUT fetch_all,
|
|
OUT fetch_all,
|
|
OUT fetch_all,
|
|
OUT fetch_all
|
|
)
|
|
BEGIN
|
|
-- country
|
|
SELECT
|
|
name, country_id as array_key,
|
|
name as array_value
|
|
|
|
FROM country as country_id WHERE status = 1;
|
|
|
|
-- Region
|
|
SELECT
|
|
name, region_id as array_key,
|
|
name as array_value
|
|
|
|
FROM region as region_id WHERE country_id = :country_id AND status = 1;
|
|
|
|
-- language
|
|
SELECT
|
|
name, language_id as array_key,
|
|
name as array_value
|
|
|
|
FROM language as language_id WHERE status = 1;
|
|
|
|
-- currency
|
|
SELECT
|
|
name, currency_id as array_key,
|
|
name as array_value
|
|
|
|
FROM currency as currency_id WHERE status = 1;
|
|
|
|
-- order_status
|
|
SELECT
|
|
name, order_status_id as array_key,
|
|
name as array_value
|
|
|
|
FROM order_status as order_status_id WHERE language_id = :language_id;
|
|
|
|
-- weight_type
|
|
SELECT
|
|
|
|
*, weight_type_id.weight_type_id as array_key,
|
|
weight_desc.name as array_value -- only set name as value and return
|
|
|
|
FROM weight_type as weight_type_id
|
|
LEFT JOIN weight_type_content as weight_desc
|
|
ON weight_type_id.weight_type_id = weight_desc.weight_type_id; -- (underscore) _ means that data will be kept in main array
|
|
|
|
-- length_type
|
|
SELECT
|
|
|
|
*, length_type_id.length_type_id as array_key,
|
|
length_desc.name as array_value -- only set name as value and return
|
|
|
|
FROM length_type as length_type_id
|
|
LEFT JOIN length_type_content as length_desc
|
|
ON length_type_id.length_type_id = length_desc.length_type_id; -- (underscore) _ means that data will be kept in main array
|
|
END
|
|
|
|
-- site data
|
|
|
|
PROCEDURE getSiteData(
|
|
IN site ARRAY,
|
|
OUT fetch_one,
|
|
OUT fetch_one,
|
|
OUT fetch_one,
|
|
OUT fetch_one,
|
|
OUT fetch_one,
|
|
OUT fetch_one
|
|
)
|
|
BEGIN
|
|
-- country
|
|
SELECT
|
|
name
|
|
FROM country as country_id WHERE country_id = :site.country_id;
|
|
|
|
-- Region
|
|
SELECT
|
|
name
|
|
FROM region as region_id WHERE region_id = :site.region_id;
|
|
|
|
-- language
|
|
SELECT
|
|
name
|
|
FROM language as language_id WHERE language_id = :site.language_id;
|
|
|
|
-- currency
|
|
SELECT
|
|
name
|
|
FROM currency as currency_id WHERE currency_id = :site.currency_id;
|
|
|
|
-- weight_type
|
|
SELECT
|
|
unit
|
|
FROM weight_type_content as weight_type WHERE weight_type_id = :site.weight_type_id;
|
|
|
|
-- length_type
|
|
SELECT
|
|
unit
|
|
FROM length_type_content AS length_type WHERE length_type_id = :site.length_type_id;
|
|
|
|
END
|
|
|
|
-- get site
|
|
|
|
PROCEDURE get(
|
|
IN site_id INT,
|
|
OUT fetch_row,
|
|
)
|
|
BEGIN
|
|
-- site
|
|
SELECT *
|
|
FROM site as _ WHERE site_id = :site_id;
|
|
END
|
|
|
|
-- add site
|
|
|
|
PROCEDURE add(
|
|
IN site ARRAY,
|
|
OUT insert_id
|
|
)
|
|
BEGIN
|
|
|
|
-- allow only table fields and set defaults for missing values
|
|
:site_data = @FILTER(:site, site)
|
|
|
|
|
|
INSERT INTO site
|
|
|
|
( @KEYS(:site_data) )
|
|
|
|
VALUES ( :site_data );
|
|
|
|
END
|
|
|
|
-- edit site
|
|
PROCEDURE edit(
|
|
IN site ARRAY,
|
|
IN site_id INT,
|
|
OUT insert_id
|
|
)
|
|
BEGIN
|
|
|
|
-- allow only table fields and set defaults for missing values
|
|
:site_data = @FILTER(:site, site)
|
|
|
|
UPDATE site
|
|
|
|
SET @LIST(:site_data)
|
|
|
|
WHERE site_id = :site_id
|
|
|
|
|
|
END
|
|
|
|
-- delete site
|
|
|
|
CREATE PROCEDURE delete(
|
|
IN site_id ARRAY,
|
|
OUT affected_rows
|
|
OUT affected_rows
|
|
OUT affected_rows
|
|
OUT affected_rows
|
|
OUT affected_rows
|
|
OUT affected_rows
|
|
OUT affected_rows
|
|
)
|
|
BEGIN
|
|
|
|
DELETE FROM post_to_site WHERE site_id IN (:site_id);
|
|
DELETE FROM product_to_site WHERE site_id IN (:site_id);
|
|
DELETE FROM menu_to_site WHERE site_id IN (:site_id);
|
|
DELETE FROM taxonomy_to_site WHERE site_id IN (:site_id);
|
|
DELETE FROM manufacturer_to_site WHERE site_id IN (:site_id);
|
|
DELETE FROM vendor_to_site WHERE site_id IN (:site_id);
|
|
DELETE FROM site WHERE site_id IN (:site_id);
|
|
|
|
END
|