mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-10-01 01:25:45 -04:00
remove async from tojson method
move path to preload function
This commit is contained in:
parent
b0281e44b8
commit
043f1a2ed9
@ -76,7 +76,7 @@ class Monitor extends BeanModel {
|
|||||||
* JSON
|
* JSON
|
||||||
* @returns {Promise<object>} Object ready to parse
|
* @returns {Promise<object>} Object ready to parse
|
||||||
*/
|
*/
|
||||||
async toJSON(preloadData = {}, includeSensitiveData = true) {
|
toJSON(preloadData = {}, includeSensitiveData = true) {
|
||||||
|
|
||||||
const tags = preloadData.tags.get(this.id) || [];
|
const tags = preloadData.tags.get(this.id) || [];
|
||||||
const notificationIDList = preloadData.notifications.get(this.id) || new Map();
|
const notificationIDList = preloadData.notifications.get(this.id) || new Map();
|
||||||
@ -87,7 +87,7 @@ class Monitor extends BeanModel {
|
|||||||
screenshot = "/screenshots/" + jwt.sign(this.id, UptimeKumaServer.getInstance().jwtSecret) + ".png";
|
screenshot = "/screenshots/" + jwt.sign(this.id, UptimeKumaServer.getInstance().jwtSecret) + ".png";
|
||||||
}
|
}
|
||||||
|
|
||||||
const path = await this.getPath();
|
const path = preloadData.paths.get(this.id) || [];
|
||||||
const pathName = path.join(" / ");
|
const pathName = path.join(" / ");
|
||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
@ -1322,7 +1322,7 @@ class Monitor extends BeanModel {
|
|||||||
heartbeatJSON["timezoneOffset"] = UptimeKumaServer.getInstance().getTimezoneOffset();
|
heartbeatJSON["timezoneOffset"] = UptimeKumaServer.getInstance().getTimezoneOffset();
|
||||||
heartbeatJSON["localDateTime"] = dayjs.utc(heartbeatJSON["time"]).tz(heartbeatJSON["timezone"]).format(SQL_DATETIME_FORMAT);
|
heartbeatJSON["localDateTime"] = dayjs.utc(heartbeatJSON["time"]).tz(heartbeatJSON["timezone"]).format(SQL_DATETIME_FORMAT);
|
||||||
|
|
||||||
await Notification.send(JSON.parse(notification.config), msg, await monitor.toJSON(preloadData, false), heartbeatJSON);
|
await Notification.send(JSON.parse(notification.config), msg, monitor.toJSON(preloadData, false), heartbeatJSON);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log.error("monitor", "Cannot send notification to " + notification.name);
|
log.error("monitor", "Cannot send notification to " + notification.name);
|
||||||
log.error("monitor", e);
|
log.error("monitor", e);
|
||||||
@ -1521,52 +1521,62 @@ class Monitor extends BeanModel {
|
|||||||
* @returns {Promise<LooseObject<any>>} object
|
* @returns {Promise<LooseObject<any>>} object
|
||||||
*/
|
*/
|
||||||
static async preparePreloadData(monitorData) {
|
static async preparePreloadData(monitorData) {
|
||||||
const monitorIDs = monitorData.map(monitor => monitor.id);
|
|
||||||
const notifications = await Monitor.getMonitorNotification(monitorIDs);
|
|
||||||
const tags = await Monitor.getMonitorTag(monitorIDs);
|
|
||||||
const maintenanceStatuses = await Promise.all(monitorData.map(monitor => Monitor.isUnderMaintenance(monitor.id)));
|
|
||||||
const childrenIDs = await Promise.all(monitorData.map(monitor => Monitor.getAllChildrenIDs(monitor.id)));
|
|
||||||
const activeStatuses = await Promise.all(monitorData.map(monitor => Monitor.isActive(monitor.id, monitor.active)));
|
|
||||||
const forceInactiveStatuses = await Promise.all(monitorData.map(monitor => Monitor.isParentActive(monitor.id)));
|
|
||||||
|
|
||||||
const notificationsMap = new Map();
|
const notificationsMap = new Map();
|
||||||
notifications.forEach(row => {
|
|
||||||
if (!notificationsMap.has(row.monitor_id)) {
|
|
||||||
notificationsMap.set(row.monitor_id, new Map());
|
|
||||||
}
|
|
||||||
notificationsMap.get(row.monitor_id).set(row.notification_id, true);
|
|
||||||
});
|
|
||||||
|
|
||||||
const tagsMap = new Map();
|
const tagsMap = new Map();
|
||||||
tags.forEach(row => {
|
|
||||||
if (!tagsMap.has(row.monitor_id)) {
|
|
||||||
tagsMap.set(row.monitor_id, []);
|
|
||||||
}
|
|
||||||
tagsMap.get(row.monitor_id).push({
|
|
||||||
name: row.name,
|
|
||||||
color: row.color
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const maintenanceStatusMap = new Map();
|
const maintenanceStatusMap = new Map();
|
||||||
monitorData.forEach((monitor, index) => {
|
|
||||||
maintenanceStatusMap.set(monitor.id, maintenanceStatuses[index]);
|
|
||||||
});
|
|
||||||
|
|
||||||
const childrenIDsMap = new Map();
|
const childrenIDsMap = new Map();
|
||||||
monitorData.forEach((monitor, index) => {
|
|
||||||
childrenIDsMap.set(monitor.id, childrenIDs[index]);
|
|
||||||
});
|
|
||||||
|
|
||||||
const activeStatusMap = new Map();
|
const activeStatusMap = new Map();
|
||||||
monitorData.forEach((monitor, index) => {
|
|
||||||
activeStatusMap.set(monitor.id, activeStatuses[index]);
|
|
||||||
});
|
|
||||||
|
|
||||||
const forceInactiveMap = new Map();
|
const forceInactiveMap = new Map();
|
||||||
monitorData.forEach((monitor, index) => {
|
const pathsMap = new Map();
|
||||||
forceInactiveMap.set(monitor.id, !forceInactiveStatuses[index]);
|
|
||||||
});
|
if (monitorData.length > 0) {
|
||||||
|
const monitorIDs = monitorData.map(monitor => monitor.id);
|
||||||
|
const notifications = await Monitor.getMonitorNotification(monitorIDs);
|
||||||
|
const tags = await Monitor.getMonitorTag(monitorIDs);
|
||||||
|
const maintenanceStatuses = await Promise.all(monitorData.map(monitor => Monitor.isUnderMaintenance(monitor.id)));
|
||||||
|
const childrenIDs = await Promise.all(monitorData.map(monitor => Monitor.getAllChildrenIDs(monitor.id)));
|
||||||
|
const activeStatuses = await Promise.all(monitorData.map(monitor => Monitor.isActive(monitor.id, monitor.active)));
|
||||||
|
const forceInactiveStatuses = await Promise.all(monitorData.map(monitor => Monitor.isParentActive(monitor.id)));
|
||||||
|
const paths = await Promise.all(monitorData.map(monitor => Monitor.getAllPath(monitor.id, monitor.name)));
|
||||||
|
|
||||||
|
notifications.forEach(row => {
|
||||||
|
if (!notificationsMap.has(row.monitor_id)) {
|
||||||
|
notificationsMap.set(row.monitor_id, new Map());
|
||||||
|
}
|
||||||
|
notificationsMap.get(row.monitor_id).set(row.notification_id, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
tags.forEach(row => {
|
||||||
|
if (!tagsMap.has(row.monitor_id)) {
|
||||||
|
tagsMap.set(row.monitor_id, []);
|
||||||
|
}
|
||||||
|
tagsMap.get(row.monitor_id).push({
|
||||||
|
name: row.name,
|
||||||
|
color: row.color
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
monitorData.forEach((monitor, index) => {
|
||||||
|
maintenanceStatusMap.set(monitor.id, maintenanceStatuses[index]);
|
||||||
|
});
|
||||||
|
|
||||||
|
monitorData.forEach((monitor, index) => {
|
||||||
|
childrenIDsMap.set(monitor.id, childrenIDs[index]);
|
||||||
|
});
|
||||||
|
|
||||||
|
monitorData.forEach((monitor, index) => {
|
||||||
|
activeStatusMap.set(monitor.id, activeStatuses[index]);
|
||||||
|
});
|
||||||
|
|
||||||
|
monitorData.forEach((monitor, index) => {
|
||||||
|
forceInactiveMap.set(monitor.id, !forceInactiveStatuses[index]);
|
||||||
|
});
|
||||||
|
|
||||||
|
monitorData.forEach((monitor, index) => {
|
||||||
|
pathsMap.set(monitor.id, paths[index]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
notifications: notificationsMap,
|
notifications: notificationsMap,
|
||||||
@ -1575,6 +1585,7 @@ class Monitor extends BeanModel {
|
|||||||
childrenIDs: childrenIDsMap,
|
childrenIDs: childrenIDsMap,
|
||||||
activeStatus: activeStatusMap,
|
activeStatus: activeStatusMap,
|
||||||
forceInactive: forceInactiveMap,
|
forceInactive: forceInactiveMap,
|
||||||
|
paths: pathsMap,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1610,16 +1621,18 @@ class Monitor extends BeanModel {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the full path
|
* Gets the full path
|
||||||
|
* @param {number} monitorID ID of the monitor to get
|
||||||
|
* @param {string} name of the monitor to get
|
||||||
* @returns {Promise<string[]>} Full path (includes groups and the name) of the monitor
|
* @returns {Promise<string[]>} Full path (includes groups and the name) of the monitor
|
||||||
*/
|
*/
|
||||||
async getPath() {
|
static async getAllPath(monitorID, name) {
|
||||||
const path = [ this.name ];
|
const path = [ name ];
|
||||||
|
|
||||||
if (this.parent === null) {
|
if (this.parent === null) {
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
let parent = await Monitor.getParent(this.id);
|
let parent = await Monitor.getParent(monitorID);
|
||||||
while (parent !== null) {
|
while (parent !== null) {
|
||||||
path.unshift(parent.name);
|
path.unshift(parent.name);
|
||||||
parent = await Monitor.getParent(parent.id);
|
parent = await Monitor.getParent(parent.id);
|
||||||
|
@ -900,7 +900,7 @@ let needSetup = false;
|
|||||||
const preloadData = await Monitor.preparePreloadData(monitorData);
|
const preloadData = await Monitor.preparePreloadData(monitorData);
|
||||||
callback({
|
callback({
|
||||||
ok: true,
|
ok: true,
|
||||||
monitor: await monitor.toJSON(preloadData),
|
monitor: monitor.toJSON(preloadData),
|
||||||
});
|
});
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -240,14 +240,16 @@ class UptimeKumaServer {
|
|||||||
const monitorData = monitorList.map(monitor => ({
|
const monitorData = monitorList.map(monitor => ({
|
||||||
id: monitor.id,
|
id: monitor.id,
|
||||||
active: monitor.active,
|
active: monitor.active,
|
||||||
|
name: monitor.name,
|
||||||
}));
|
}));
|
||||||
const preloadData = await Monitor.preparePreloadData(monitorData);
|
const preloadData = await Monitor.preparePreloadData(monitorData);
|
||||||
|
|
||||||
const monitorPromises = monitorList.map(monitor => monitor.toJSON(preloadData).then(json => {
|
const monitorPromises = monitorList.map(monitor => {
|
||||||
|
const json = monitor.toJSON(preloadData);
|
||||||
return { id: monitor.id,
|
return { id: monitor.id,
|
||||||
json
|
json
|
||||||
};
|
};
|
||||||
}));
|
});
|
||||||
const monitors = await Promise.all(monitorPromises);
|
const monitors = await Promise.all(monitorPromises);
|
||||||
|
|
||||||
monitors.forEach(monitor => {
|
monitors.forEach(monitor => {
|
||||||
|
Loading…
Reference in New Issue
Block a user