DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `edi`.`mail_new`(
	 vMessageId VARCHAR(100)
	,vSender VARCHAR(150)
    ,OUT vSelf INT
)
BEGIN
/**
 * Registers a mail message.
 *
 * @param vMessageId Message-ID of email
 * @param vSender Id of mail sender
 * @param vSelf The created message id
 */
	DECLARE vSenderId INT;
	DECLARE vIsDuplicated BOOL;
	DECLARE duplicateKey CONDITION FOR 1062;

	DECLARE CONTINUE HANDLER FOR duplicateKey
		SET vIsDuplicated = TRUE;

	SELECT id INTO vSenderId
		FROM mailSender
		WHERE mail = vSender;

	SET vIsDuplicated = FALSE;
	INSERT INTO mail SET
		sender = vSender,
		senderFk = vSenderId,
		messageId = vMessageId;
		
	IF vIsDuplicated THEN
		SELECT id INTO vSelf
			FROM mail
			WHERE messageId = vMessageId;
	ELSE
		SET vSelf = LAST_INSERT_ID();
	END IF;
END$$
DELIMITER ;