Files
outline/server/commands/collectionDestroyer.ts

54 lines
1.1 KiB
TypeScript

import { Transaction, Op } from "sequelize";
import { Collection, Document, Event, User } from "@server/models";
type Props = {
/** The collection to delete */
collection: Collection;
/** The actor who is deleting the collection */
user: User;
/** The database transaction to use */
transaction: Transaction;
/** The IP address of the current request */
ip: string;
};
export default async function collectionDestroyer({
collection,
transaction,
user,
ip,
}: Props) {
await collection.destroy({ transaction });
await Document.update(
{
lastModifiedById: user.id,
deletedAt: new Date(),
},
{
transaction,
where: {
teamId: collection.teamId,
collectionId: collection.id,
archivedAt: {
[Op.is]: null,
},
},
}
);
await Event.create(
{
name: "collections.delete",
collectionId: collection.id,
teamId: collection.teamId,
actorId: user.id,
data: {
name: collection.name,
},
ip,
},
{ transaction }
);
}