Files
outline/server/commands/subscriptionDestroyer.ts
CuriousCorrelation 24c71c38a5 feat: Document subscriptions (#3834)
Co-authored-by: Tom Moor <tom.moor@gmail.com>
2022-08-25 23:47:13 -07:00

42 lines
941 B
TypeScript

import { Transaction } from "sequelize";
import { Event, Subscription, User } from "@server/models";
type Props = {
/** The user destroying the subscription */
user: User;
/** The subscription to destroy */
subscription: Subscription;
/** The IP address of the incoming request */
ip: string;
transaction: Transaction;
};
/**
* This command destroys a user subscription to a document so they will no
* longer receive notifications.
*
* @returns The subscription that was destroyed
*/
export default async function subscriptionDestroyer({
user,
subscription,
ip,
transaction,
}: Props): Promise<Subscription> {
await subscription.destroy({ transaction });
await Event.create(
{
name: "subscriptions.delete",
modelId: subscription.id,
actorId: user.id,
userId: user.id,
documentId: subscription.documentId,
ip,
},
{ transaction }
);
return subscription;
}