VvebOIDC/plugins/newsletter/sql/mysqli/newsletter_mail.sql

116 lines
2.3 KiB
SQL

-- newsletter_mails
-- Get one newsletter_mail
CREATE PROCEDURE get(
IN newsletter_list_id INT,
OUT fetch_row,
)
BEGIN
-- newsletter_mail
SELECT *
FROM newsletter_mail as _ -- (underscore) _ means that data will be kept in main array
WHERE newsletter_list_id = :newsletter_list_id LIMIT 1;
END
-- Edit newsletter_mail
CREATE PROCEDURE edit(
IN newsletter_mail ARRAY,
IN newsletter_list_id INT,
OUT affected_rows
)
BEGIN
-- allow only table fields and set defaults for missing values
@FILTER(:newsletter_mail, newsletter_mail)
UPDATE newsletter_mail
SET @LIST(:newsletter_mail)
WHERE newsletter_list_id = :newsletter_list_id
END
-- Add new newsletter_mail
CREATE PROCEDURE add(
IN newsletter_mail ARRAY,
OUT affected_rows
)
BEGIN
-- allow only table fields and set defaults for missing values
:newsletter_mail = @FILTER(:newsletter_mail, newsletter_mail)
INSERT INTO newsletter_mail
( @KEYS(:newsletter_mail) )
VALUES ( :newsletter_mail )
ON DUPLICATE KEY UPDATE email = :newsletter_mail.email;
END
-- Get all newsletter_mails
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 newsletter_mails for newsletter_mails query
OUT fetch_all,
-- return newsletter_mails count for count query
OUT fetch_one,
)
BEGIN
SELECT *
FROM newsletter_mail
ORDER BY newsletter_list_id DESC
LIMIT :limit OFFSET :start;
SELECT count(*) FROM (
@SQL_COUNT(newsletter_mail.newsletter_list_id, newsletter_mail) -- this takes previous query removes limit and replaces select columns with parameter product_id
) as count;
END
-- Delete newsletter_mail
CREATE PROCEDURE delete(
IN newsletter_list_id ARRAY,
OUT affected_rows
)
BEGIN
DELETE FROM newsletter_mail WHERE newsletter_list_id IN (:newsletter_list_id)
END
-- Get number of newsletter_mails with specified status
CREATE PROCEDURE getStatusCount(
IN status INT,
OUT fetch_row,
)
BEGIN
-- newsletter_mail
SELECT count(*) as count
FROM newsletter_mail as _ -- (underscore) _ means that data will be kept in main array
WHERE status = :status LIMIT 1;
END