Compare commits

..

2 Commits

View File

@ -25,8 +25,8 @@ DROP TABLE IF EXISTS `heart`;
CREATE TABLE `heart` ( CREATE TABLE `heart` (
`HeartId` bigint unsigned NOT NULL AUTO_INCREMENT, `HeartId` bigint unsigned NOT NULL AUTO_INCREMENT,
`TopicId` int unsigned NOT NULL, `TopicId` int unsigned NOT NULL,
`Heart` varchar(32) NOT NULL, `Heart` varchar(255) NOT NULL,
`Name` varchar(45) GENERATED ALWAYS AS (`Heart`) VIRTUAL, `Name` varchar(255) GENERATED ALWAYS AS (`Heart`) VIRTUAL,
`Status` varchar(16) NOT NULL DEFAULT 'beating', `Status` varchar(16) NOT NULL DEFAULT 'beating',
`LastBeatTs` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `LastBeatTs` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ExpiryTs` timestamp NOT NULL, `ExpiryTs` timestamp NOT NULL,
@ -35,7 +35,7 @@ CREATE TABLE `heart` (
PRIMARY KEY (`HeartId`), PRIMARY KEY (`HeartId`),
UNIQUE KEY `idx_TopicId_Heart_UNIQUE` (`TopicId`,`Heart`), UNIQUE KEY `idx_TopicId_Heart_UNIQUE` (`TopicId`,`Heart`),
CONSTRAINT `fk_heart_TopicId` FOREIGN KEY (`TopicId`) REFERENCES `topic` (`TopicId`) CONSTRAINT `fk_heart_TopicId` FOREIGN KEY (`TopicId`) REFERENCES `topic` (`TopicId`)
) ENGINE=InnoDB AUTO_INCREMENT=227102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
@ -49,14 +49,14 @@ DROP TABLE IF EXISTS `heartevent`;
CREATE TABLE `heartevent` ( CREATE TABLE `heartevent` (
`HeartEventId` bigint unsigned NOT NULL AUTO_INCREMENT, `HeartEventId` bigint unsigned NOT NULL AUTO_INCREMENT,
`TopicId` int unsigned NOT NULL, `TopicId` int unsigned NOT NULL,
`Heart` varchar(32) NOT NULL, `Heart` varchar(255) NOT NULL,
`Status` varchar(16) NOT NULL DEFAULT 'created', `Status` varchar(16) NOT NULL DEFAULT 'created',
`Event` varchar(16) NOT NULL COMMENT 'ENUM(''created'',''started'',''stopped'',''deleted'')', `Event` varchar(16) NOT NULL COMMENT 'ENUM(''created'',''started'',''stopped'',''deleted'')',
`CreateTs` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `CreateTs` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`HeartEventId`), PRIMARY KEY (`HeartEventId`),
KEY `idx_topic` (`TopicId`,`CreateTs`), KEY `idx_heartevent_TopicId` (`TopicId`,`HeartEventId`)
KEY `idx_reported` (`Status`) KEY `idx_heartevent_Status` (`Status`),
) ENGINE=InnoDB AUTO_INCREMENT=372 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
@ -74,7 +74,7 @@ CREATE TABLE `plan` (
`TimeoutMultiplier` double NOT NULL, `TimeoutMultiplier` double NOT NULL,
PRIMARY KEY (`PlanId`), PRIMARY KEY (`PlanId`),
UNIQUE KEY `Name_UNIQUE` (`Name`) UNIQUE KEY `Name_UNIQUE` (`Name`)
) ENGINE=InnoDB AUTO_INCREMENT=4099 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB AUTO_INCREMENT=4098 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@ -83,7 +83,9 @@ CREATE TABLE `plan` (
LOCK TABLES `plan` WRITE; LOCK TABLES `plan` WRITE;
/*!40000 ALTER TABLE `plan` DISABLE KEYS */; /*!40000 ALTER TABLE `plan` DISABLE KEYS */;
INSERT INTO `plan` VALUES (4096,'none',0,1),(4097,'unlimited',1000000,0); INSERT INTO `plan` VALUES
(4096,'none',0,1),
(4097,'unlimited',1000000,0);
/*!40000 ALTER TABLE `plan` ENABLE KEYS */; /*!40000 ALTER TABLE `plan` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@ -108,7 +110,10 @@ CREATE TABLE `role` (
LOCK TABLES `role` WRITE; LOCK TABLES `role` WRITE;
/*!40000 ALTER TABLE `role` DISABLE KEYS */; /*!40000 ALTER TABLE `role` DISABLE KEYS */;
INSERT INTO `role` VALUES (4096,'anonymous','login;register;'),(4097,'admin','**;'),(4098,'client','dashboard;profile;topic;'); INSERT INTO `role` VALUES
(4096,'anonymous','login;register;'),
(4097,'admin','**;'),
(4098,'client','dashboard;profile;topic;');
/*!40000 ALTER TABLE `role` ENABLE KEYS */; /*!40000 ALTER TABLE `role` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@ -121,7 +126,6 @@ DROP TABLE IF EXISTS `topic`;
/*!50503 SET character_set_client = utf8mb4 */; /*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `topic` ( CREATE TABLE `topic` (
`TopicId` int unsigned NOT NULL AUTO_INCREMENT, `TopicId` int unsigned NOT NULL AUTO_INCREMENT,
`Creator` varchar(45) NOT NULL,
`CreatorId` int unsigned NOT NULL, `CreatorId` int unsigned NOT NULL,
`Name` varchar(45) NOT NULL, `Name` varchar(45) NOT NULL,
`Description` varchar(45) NOT NULL, `Description` varchar(45) NOT NULL,
@ -132,8 +136,9 @@ CREATE TABLE `topic` (
PRIMARY KEY (`TopicId`), PRIMARY KEY (`TopicId`),
UNIQUE KEY `TopicName_UNIQUE` (`Name`), UNIQUE KEY `TopicName_UNIQUE` (`Name`),
UNIQUE KEY `ReadToken_UNIQUE` (`ReadToken`), UNIQUE KEY `ReadToken_UNIQUE` (`ReadToken`),
KEY `Creator_INDEX` (`Creator`) KEY `fk_topic_CreatorId_idx` (`CreatorId`),
) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CONSTRAINT `fk_topic_CreatorId` FOREIGN KEY (`CreatorId`) REFERENCES `user` (`UserId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@ -175,7 +180,7 @@ CREATE TABLE `user` (
KEY `fk_user_RoleId_idx` (`RoleId`), KEY `fk_user_RoleId_idx` (`RoleId`),
CONSTRAINT `fk_user_PlanId` FOREIGN KEY (`PlanId`) REFERENCES `plan` (`PlanId`), CONSTRAINT `fk_user_PlanId` FOREIGN KEY (`PlanId`) REFERENCES `plan` (`PlanId`),
CONSTRAINT `fk_user_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `role` (`RoleId`) CONSTRAINT `fk_user_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `role` (`RoleId`)
) ENGINE=InnoDB AUTO_INCREMENT=4111 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB AUTO_INCREMENT=4098 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@ -184,7 +189,9 @@ CREATE TABLE `user` (
LOCK TABLES `user` WRITE; LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */; /*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES (4096,4096,4096,'Anonymous','Anonymous',0xBADC0D35,0xBADC0D35,0,NOW(),NOW()); INSERT INTO `user` VALUES
(4096,4096,4096,'Anonymous','Anonymous',0xBADC0D35,0xBADC0D35,0,NOW(),NOW()),
(4097,4097,4097,'admin','Administrator',0xEF9128C1CB962024D58B50ECFA8376CC6919529BA6533AB03CE8D223BDE97BE14EF1534D85C3378AA09BECABF865ED746F2780D1A2080F7CA03486ADEE7D57C1,0xF8628C3DD353C12C5996D3E9838B8F034A2E7E32581C6771B3B5D3FBDA93CF70CBD779449ACC4A4246726BBA3F4E53035EC8FBE4B24A93E65B9E4EA0A0C38166,1,NOW(),NOW());
/*!40000 ALTER TABLE `user` ENABLE KEYS */; /*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES; UNLOCK TABLES;
@ -209,7 +216,7 @@ CREATE TABLE `userinvite` (
KEY `fk_userinvite_RoleId_idx` (`RoleId`), KEY `fk_userinvite_RoleId_idx` (`RoleId`),
CONSTRAINT `fk_userinvite_PlanId` FOREIGN KEY (`PlanId`) REFERENCES `plan` (`PlanId`), CONSTRAINT `fk_userinvite_PlanId` FOREIGN KEY (`PlanId`) REFERENCES `plan` (`PlanId`),
CONSTRAINT `fk_userinvite_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `role` (`RoleId`) CONSTRAINT `fk_userinvite_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `role` (`RoleId`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
-- --
@ -229,6 +236,10 @@ CREATE TABLE `usersession` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping events for database 'herald'
--
-- --
-- Dumping routines for database 'herald' -- Dumping routines for database 'herald'
-- --
@ -255,10 +266,11 @@ BEGIN
WHERE ExpiryTs < @ts AND Status = 'beating'; WHERE ExpiryTs < @ts AND Status = 'beating';
UPDATE heart set Status = 'stopped' WHERE ExpiryTs < @ts AND Status = 'beating' AND HeartId > 0; UPDATE heart set Status = 'stopped' WHERE ExpiryTs < @ts AND Status = 'beating' AND HeartId > 0;
SET @id = (SELECT HeartEventId FROM heartevent WHERE `Status` = 'created' ORDER BY HeartEventId DESC LIMIT 1);
-- updated hearts, now grab one event for report
SET @id = (SELECT HeartEventId FROM heartevent WHERE `Status` = 'created' AND `Event` = 'stopped' ORDER BY HeartEventId DESC LIMIT 1);
UPDATE heartevent SET `Status` = 'processing' WHERE HeartEventId = @id; UPDATE heartevent SET `Status` = 'processing' WHERE HeartEventId = @id;
SELECT ha.*, t.`Description` SELECT ha.*, t.`Description`
FROM heartevent ha FROM heartevent ha
JOIN topic t USING (TopicId) JOIN topic t USING (TopicId)
@ -266,7 +278,6 @@ BEGIN
COMMIT; COMMIT;
END ;; END ;;
DELIMITER ; DELIMITER ;
/*!50003 SET sql_mode = @saved_sql_mode */ ; /*!50003 SET sql_mode = @saved_sql_mode */ ;
/*!50003 SET character_set_client = @saved_cs_client */ ; /*!50003 SET character_set_client = @saved_cs_client */ ;
/*!50003 SET character_set_results = @saved_cs_results */ ; /*!50003 SET character_set_results = @saved_cs_results */ ;
@ -281,7 +292,7 @@ DELIMITER ;
/*!50003 SET @saved_sql_mode = @@sql_mode */ ; /*!50003 SET @saved_sql_mode = @@sql_mode */ ;
/*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ; /*!50003 SET sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' */ ;
DELIMITER ;; DELIMITER ;;
CREATE DEFINER=`herald`@`%` PROCEDURE `report_heartbeat`(_topicId INT UNSIGNED, _heart VARCHAR(45), _timeoutSeconds INTEGER UNSIGNED) CREATE DEFINER=`herald`@`%` PROCEDURE `report_heartbeat`(_topicId INT UNSIGNED, _heart VARCHAR(255), _timeoutSeconds INTEGER UNSIGNED)
BEGIN BEGIN
DECLARE beating INTEGER DEFAULT 0; DECLARE beating INTEGER DEFAULT 0;
START TRANSACTION; START TRANSACTION;
@ -320,4 +331,4 @@ DELIMITER ;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2022-05-13 18:44:48 -- Dump completed on 2025-09-18 18:53:29