VvebOIDC/plugins/contact-form/sql/sqlite/message.sql

114 lines
1.9 KiB
SQL

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