import { Transaction } from "sequelize"; import { User, Event, GroupUser } from "@server/models"; import { ValidationError } from "../errors"; import { sequelize } from "../sequelize"; export default async function userSuspender({ user, actorId, ip, }: { // @ts-expect-error ts-migrate(2749) FIXME: 'User' refers to a value, but is being used as a t... Remove this comment to see the full error message user: User; actorId: string; ip: string; }): Promise { if (user.id === actorId) { throw ValidationError("Unable to suspend the current user"); } await sequelize.transaction(async (transaction: Transaction) => { await user.update( { suspendedById: actorId, suspendedAt: new Date(), }, { transaction, } ); await GroupUser.destroy({ where: { userId: user.id, }, transaction, }); await Event.create( { name: "users.suspend", actorId, userId: user.id, teamId: user.teamId, data: { name: user.name, }, ip, }, { transaction, } ); }); }