VvebOIDC/admin/sql/mysqli/site.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