Files
outline/server/queues/processors/CollectionDeletedProcessor.ts

43 lines
1.3 KiB
TypeScript

import teamUpdater from "@server/commands/teamUpdater";
import { Team, User } from "@server/models";
import { sequelize } from "@server/storage/database";
import { Event as TEvent, CollectionEvent } from "@server/types";
import DetachDraftsFromCollectionTask from "../tasks/DetachDraftsFromCollectionTask";
import BaseProcessor from "./BaseProcessor";
export default class CollectionDeletedProcessor extends BaseProcessor {
static applicableEvents: TEvent["name"][] = ["collections.delete"];
async perform(event: CollectionEvent) {
await DetachDraftsFromCollectionTask.schedule({
collectionId: event.collectionId,
actorId: event.actorId,
ip: event.ip,
});
await sequelize.transaction(async (transaction) => {
const team = await Team.findByPk(event.teamId, {
rejectOnEmpty: true,
transaction,
lock: transaction.LOCK.UPDATE,
});
if (team?.defaultCollectionId === event.collectionId) {
const user = await User.findByPk(event.actorId, {
rejectOnEmpty: true,
paranoid: false,
transaction,
});
await teamUpdater({
params: { defaultCollectionId: null },
user,
team,
transaction,
ip: event.ip,
});
}
});
}
}