add routines to database create-script
This commit is contained in:
parent
85dc2f87ec
commit
1e5602fc4c
1 changed files with 205 additions and 0 deletions
205
db/create.sql
205
db/create.sql
|
|
@ -1943,6 +1943,211 @@ CREATE TABLE `xplevels` (
|
||||||
CONSTRAINT `xplevels_ibfk_2` FOREIGN KEY (`seminary_id`) REFERENCES `seminaries` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
CONSTRAINT `xplevels_ibfk_2` FOREIGN KEY (`seminary_id`) REFERENCES `seminaries` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping routines for database 'z'
|
||||||
|
--
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `update_cache_charactergroups` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_charactergroups`(
|
||||||
|
IN CHARACTERGROUPID INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
/* XPs */
|
||||||
|
REPLACE INTO cache_charactergroups
|
||||||
|
(charactergroup_id, xps)
|
||||||
|
SELECT charactergroups.id, IFNULL(SUM(ROUND(charactergroupsquests.xps * charactergroupsquests_groups.xps_factor)),0) AS xps
|
||||||
|
FROM charactergroups
|
||||||
|
LEFT JOIN charactergroupsquests_groups ON charactergroupsquests_groups.charactergroup_id = charactergroups.id
|
||||||
|
LEFT JOIN charactergroupsquests ON charactergroupsquests.id = charactergroupsquests_groups.charactergroupsquest_id
|
||||||
|
WHERE charactergroups.id = CHARACTERGROUPID;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `update_cache_charactergroups_charactergroupsquest` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_charactergroups_charactergroupsquest`(
|
||||||
|
IN CHARACTERGROUPSQUESTID INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE CHARACTERGROUPID INT;
|
||||||
|
DECLARE done INT DEFAULT FALSE;
|
||||||
|
DECLARE charactergroups_cursor CURSOR FOR
|
||||||
|
SELECT charactergroup_id
|
||||||
|
FROM charactergroupsquests_groups
|
||||||
|
WHERE charactergroupsquest_id = CHARACTERGROUPSQUESTID;
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||||
|
|
||||||
|
SET done = 0;
|
||||||
|
OPEN charactergroups_cursor;
|
||||||
|
get_charactergroups: LOOP
|
||||||
|
FETCH charactergroups_cursor INTO CHARACTERGROUPID;
|
||||||
|
IF done = TRUE THEN
|
||||||
|
LEAVE get_charactergroups;
|
||||||
|
END IF;
|
||||||
|
CALL update_cache_charactergroups(CHARACTERGROUPID);
|
||||||
|
END LOOP get_charactergroups;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `update_cache_characters` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_characters`(
|
||||||
|
IN CHARACTERID INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE QUESTXPS INT UNSIGNED;
|
||||||
|
DECLARE GROUPSXPS INT UNSIGNED;
|
||||||
|
DECLARE TOTALXPS INT UNSIGNED;
|
||||||
|
DECLARE XPLEVELID INT;
|
||||||
|
DECLARE AVATARID INT;
|
||||||
|
|
||||||
|
/* XPs */
|
||||||
|
SELECT IFNULL(SUM(quests.xps),0) INTO QUESTXPS
|
||||||
|
FROM quests_characters
|
||||||
|
LEFT JOIN quests ON quests.id = quests_characters.quest_id
|
||||||
|
WHERE quests_characters.character_id = CHARACTERID AND quests_characters.status = 3;
|
||||||
|
SELECT IFNULL(SUM(cache_charactergroups.xps),0) INTO GROUPSXPS
|
||||||
|
FROM characters_charactergroups
|
||||||
|
LEFT JOIN cache_charactergroups ON cache_charactergroups.charactergroup_id = characters_charactergroups.charactergroup_id
|
||||||
|
WHERE characters_charactergroups.character_id = CHARACTERID;
|
||||||
|
SET TOTALXPS = QUESTXPS + GROUPSXPS;
|
||||||
|
|
||||||
|
/* XP-level */
|
||||||
|
SELECT (
|
||||||
|
SELECT id
|
||||||
|
FROM xplevels
|
||||||
|
WHERE seminary_id = charactertypes.seminary_id AND xps = (
|
||||||
|
SELECT MAX(xps)
|
||||||
|
FROM xplevels AS xplevels_sub
|
||||||
|
WHERE xps <= TOTALXPS
|
||||||
|
)
|
||||||
|
) INTO XPLEVELID
|
||||||
|
FROM characters
|
||||||
|
LEFT JOIN charactertypes ON charactertypes.id = characters.charactertype_id
|
||||||
|
WHERE characters.id = CHARACTERID;
|
||||||
|
|
||||||
|
/* Avatar */
|
||||||
|
SELECT avatars.id INTO AVATARID
|
||||||
|
FROM characters
|
||||||
|
LEFT JOIN avatars ON avatars.charactertype_id = characters.charactertype_id AND avatars.xplevel_id = XPLEVELID
|
||||||
|
WHERE characters.id = CHARACTERID;
|
||||||
|
|
||||||
|
/* Set values */
|
||||||
|
REPLACE INTO cache_characters
|
||||||
|
(character_id, xps, quest_xps, xplevel_id, avatar_id)
|
||||||
|
VALUES
|
||||||
|
(CHARACTERID, TOTALXPS, QUESTXPS, XPLEVELID, AVATARID);
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `update_cache_characters_charactergroup` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_characters_charactergroup`(
|
||||||
|
IN CHARACTERGROUPID INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE CHARACTERID INT;
|
||||||
|
DECLARE done INT DEFAULT FALSE;
|
||||||
|
DECLARE characters_cursor CURSOR FOR
|
||||||
|
SELECT character_id
|
||||||
|
FROM characters_charactergroups
|
||||||
|
WHERE charactergroup_id = CHARACTERGROUPID;
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||||
|
|
||||||
|
SET done = 0;
|
||||||
|
OPEN characters_cursor;
|
||||||
|
get_characters: LOOP
|
||||||
|
FETCH characters_cursor INTO CHARACTERID;
|
||||||
|
IF done = TRUE THEN
|
||||||
|
LEAVE get_characters;
|
||||||
|
END IF;
|
||||||
|
CALL update_cache_characters(CHARACTERID);
|
||||||
|
END LOOP get_characters;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
|
/*!50003 DROP PROCEDURE IF EXISTS `update_cache_characters_quest` */;
|
||||||
|
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||||
|
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||||
|
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||||
|
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||||
|
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||||
|
/*!50003 SET collation_connection = utf8mb4_unicode_ci */ ;
|
||||||
|
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||||
|
/*!50003 SET sql_mode = '' */ ;
|
||||||
|
DELIMITER ;;
|
||||||
|
CREATE DEFINER=`z`@`%` PROCEDURE `update_cache_characters_quest`(
|
||||||
|
IN QUESTID INT(11)
|
||||||
|
)
|
||||||
|
BEGIN
|
||||||
|
DECLARE CHARACTERID INT;
|
||||||
|
DECLARE done INT DEFAULT FALSE;
|
||||||
|
DECLARE characters_cursor CURSOR FOR
|
||||||
|
SELECT character_id
|
||||||
|
FROM quests_characters
|
||||||
|
WHERE quest_id = QUESTID AND status = 3;
|
||||||
|
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||||
|
|
||||||
|
SET done = 0;
|
||||||
|
OPEN characters_cursor;
|
||||||
|
get_characters: LOOP
|
||||||
|
FETCH characters_cursor INTO CHARACTERID;
|
||||||
|
IF done = TRUE THEN
|
||||||
|
LEAVE get_characters;
|
||||||
|
END IF;
|
||||||
|
CALL update_cache_characters(CHARACTERID);
|
||||||
|
END LOOP get_characters;
|
||||||
|
END ;;
|
||||||
|
DELIMITER ;
|
||||||
|
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||||
|
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||||
|
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||||
|
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue