Sql messageSend() and messageSendWithUser()
This commit is contained in:
parent
bf66dcbf10
commit
ded1ab5d93
|
@ -0,0 +1,17 @@
|
||||||
|
USE `vn`;
|
||||||
|
DROP function IF EXISTS `messageSend`;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
USE `vn`$$
|
||||||
|
CREATE DEFINER=`root`@`%` FUNCTION `messageSend`(vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8) RETURNS int(11)
|
||||||
|
BEGIN
|
||||||
|
DECLARE result INT;
|
||||||
|
DECLARE vSenderFk INT;
|
||||||
|
|
||||||
|
SELECT id INTO vSenderFk
|
||||||
|
FROM account.user WHERE `name` = account.userGetName();
|
||||||
|
|
||||||
|
RETURN (SELECT messageSendWithUser(vSenderFk, vRecipient, vMessage));
|
||||||
|
END$$
|
||||||
|
|
||||||
|
DELIMITER ;
|
|
@ -0,0 +1,57 @@
|
||||||
|
USE `vn`;
|
||||||
|
DROP function IF EXISTS `messageSendWithUser`;
|
||||||
|
|
||||||
|
DELIMITER $$
|
||||||
|
USE `vn`$$
|
||||||
|
CREATE DEFINER=`root`@`%` FUNCTION `messageSendWithUser`(vSenderFK INT, vRecipient VARCHAR(255) CHARSET utf8, vMessage TEXT CHARSET utf8) RETURNS int(11)
|
||||||
|
BEGIN
|
||||||
|
|
||||||
|
DECLARE vCount INT;
|
||||||
|
DECLARE vUuid VARCHAR(255);
|
||||||
|
DECLARE vSendDate DATETIME DEFAULT NOW();
|
||||||
|
DECLARE vSender VARCHAR(255) CHARSET utf8;
|
||||||
|
|
||||||
|
SELECT `name` INTO vSender
|
||||||
|
FROM account.user WHERE id = vSenderFK;
|
||||||
|
|
||||||
|
SET vRecipient = LOWER(vRecipient);
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tRecipients;
|
||||||
|
CREATE TEMPORARY TABLE tRecipients
|
||||||
|
SELECT u.name finalRecipient
|
||||||
|
FROM account.mailAlias a
|
||||||
|
JOIN account.mailAliasAccount aa ON aa.mailAlias = a.id
|
||||||
|
JOIN account.user u ON u.id = aa.account
|
||||||
|
WHERE a.alias = vRecipient COLLATE utf8_unicode_ci
|
||||||
|
AND u.name != vSender
|
||||||
|
AND u.active
|
||||||
|
UNION
|
||||||
|
SELECT u.name FROM account.user u
|
||||||
|
WHERE u.name = vRecipient
|
||||||
|
AND u.active;
|
||||||
|
|
||||||
|
SELECT COUNT(*) INTO vCount FROM tRecipients;
|
||||||
|
|
||||||
|
IF vCount = 0 THEN
|
||||||
|
RETURN vCount;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
SET vUuid = UUID();
|
||||||
|
|
||||||
|
INSERT INTO message
|
||||||
|
SET uuid = vUuid,
|
||||||
|
sender = vSender,
|
||||||
|
recipient = vRecipient,
|
||||||
|
message = vMessage,
|
||||||
|
sendDate = vSendDate;
|
||||||
|
|
||||||
|
INSERT INTO messageInbox (uuid, sender, recipient, finalRecipient, message, sendDate)
|
||||||
|
SELECT vUuid, vSender, vRecipient, finalRecipient, vMessage, vSendDate
|
||||||
|
FROM tRecipients;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE tRecipients;
|
||||||
|
RETURN vCount;
|
||||||
|
END$$
|
||||||
|
|
||||||
|
DELIMITER ;
|
||||||
|
|
Loading…
Reference in New Issue