fix: fix a bug which can not raise monitor with changeActive if monitor never run before
the case of init state is stop. (active: false) and add workspace id validate in update logic
This commit is contained in:
parent
df01dcb857
commit
e38df2706e
@ -23,12 +23,13 @@ export class MonitorManager {
|
|||||||
*/
|
*/
|
||||||
async upsert(data: MonitorUpsertData): Promise<MonitorWithNotification> {
|
async upsert(data: MonitorUpsertData): Promise<MonitorWithNotification> {
|
||||||
let monitor: MonitorWithNotification;
|
let monitor: MonitorWithNotification;
|
||||||
const { id, notificationIds = [], ...others } = data;
|
const { id, workspaceId, notificationIds = [], ...others } = data;
|
||||||
if (id) {
|
if (id) {
|
||||||
// update
|
// update
|
||||||
monitor = await prisma.monitor.update({
|
monitor = await prisma.monitor.update({
|
||||||
where: {
|
where: {
|
||||||
id,
|
id,
|
||||||
|
workspaceId,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
...others,
|
...others,
|
||||||
@ -45,6 +46,7 @@ export class MonitorManager {
|
|||||||
monitor = await prisma.monitor.create({
|
monitor = await prisma.monitor.create({
|
||||||
data: {
|
data: {
|
||||||
...others,
|
...others,
|
||||||
|
workspaceId,
|
||||||
notifications: {
|
notifications: {
|
||||||
connect: notificationIds.map((id) => ({ id })),
|
connect: notificationIds.map((id) => ({ id })),
|
||||||
},
|
},
|
||||||
@ -124,4 +126,12 @@ export class MonitorManager {
|
|||||||
getRunner(monitorId: string): MonitorRunner | undefined {
|
getRunner(monitorId: string): MonitorRunner | undefined {
|
||||||
return this.monitorRunner[monitorId];
|
return this.monitorRunner[monitorId];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createRunner(monitor: MonitorWithNotification) {
|
||||||
|
const runner = (this.monitorRunner[monitor.id] = new MonitorRunner(
|
||||||
|
monitor
|
||||||
|
));
|
||||||
|
|
||||||
|
return runner;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -251,7 +251,7 @@ export const monitorRouter = router({
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
.output(monitorInfoSchema)
|
.output(monitorInfoSchema)
|
||||||
.mutation(async ({ input, ctx }) => {
|
.mutation(async ({ input }) => {
|
||||||
const { workspaceId, monitorId, active } = input;
|
const { workspaceId, monitorId, active } = input;
|
||||||
|
|
||||||
const monitor = await prisma.monitor.update({
|
const monitor = await prisma.monitor.update({
|
||||||
@ -262,9 +262,15 @@ export const monitorRouter = router({
|
|||||||
data: {
|
data: {
|
||||||
active,
|
active,
|
||||||
},
|
},
|
||||||
|
include: {
|
||||||
|
notifications: true,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
const runner = monitorManager.getRunner(monitorId);
|
let runner = monitorManager.getRunner(monitorId);
|
||||||
if (runner) {
|
if (!runner) {
|
||||||
|
runner = monitorManager.createRunner(monitor);
|
||||||
|
}
|
||||||
|
|
||||||
if (active === true) {
|
if (active === true) {
|
||||||
runner.startMonitor();
|
runner.startMonitor();
|
||||||
runner.createEvent(
|
runner.createEvent(
|
||||||
@ -278,7 +284,6 @@ export const monitorRouter = router({
|
|||||||
`Monitor [${monitor.name}] has been manual stop`
|
`Monitor [${monitor.name}] has been manual stop`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return monitor;
|
return monitor;
|
||||||
}),
|
}),
|
||||||
|
Loading…
Reference in New Issue
Block a user