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> {
|
||||
let monitor: MonitorWithNotification;
|
||||
const { id, notificationIds = [], ...others } = data;
|
||||
const { id, workspaceId, notificationIds = [], ...others } = data;
|
||||
if (id) {
|
||||
// update
|
||||
monitor = await prisma.monitor.update({
|
||||
where: {
|
||||
id,
|
||||
workspaceId,
|
||||
},
|
||||
data: {
|
||||
...others,
|
||||
@ -45,6 +46,7 @@ export class MonitorManager {
|
||||
monitor = await prisma.monitor.create({
|
||||
data: {
|
||||
...others,
|
||||
workspaceId,
|
||||
notifications: {
|
||||
connect: notificationIds.map((id) => ({ id })),
|
||||
},
|
||||
@ -124,4 +126,12 @@ export class MonitorManager {
|
||||
getRunner(monitorId: string): MonitorRunner | undefined {
|
||||
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)
|
||||
.mutation(async ({ input, ctx }) => {
|
||||
.mutation(async ({ input }) => {
|
||||
const { workspaceId, monitorId, active } = input;
|
||||
|
||||
const monitor = await prisma.monitor.update({
|
||||
@ -262,9 +262,15 @@ export const monitorRouter = router({
|
||||
data: {
|
||||
active,
|
||||
},
|
||||
include: {
|
||||
notifications: true,
|
||||
},
|
||||
});
|
||||
const runner = monitorManager.getRunner(monitorId);
|
||||
if (runner) {
|
||||
let runner = monitorManager.getRunner(monitorId);
|
||||
if (!runner) {
|
||||
runner = monitorManager.createRunner(monitor);
|
||||
}
|
||||
|
||||
if (active === true) {
|
||||
runner.startMonitor();
|
||||
runner.createEvent(
|
||||
@ -278,7 +284,6 @@ export const monitorRouter = router({
|
||||
`Monitor [${monitor.name}] has been manual stop`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return monitor;
|
||||
}),
|
||||
|
Loading…
Reference in New Issue
Block a user