Files
outline/server/commands/revisionCreator.ts

45 lines
949 B
TypeScript

import { sequelize } from "@server/database/sequelize";
import { Document, User, Event, Revision } from "@server/models";
export default async function revisionCreator({
document,
user,
ip,
}: {
document: Document;
user: User;
ip?: string;
}) {
let transaction;
try {
transaction = await sequelize.transaction();
const revision = await Revision.createFromDocument(document, {
transaction,
});
await Event.create(
{
name: "revisions.create",
documentId: document.id,
collectionId: document.collectionId,
modelId: revision.id,
teamId: document.teamId,
actorId: user.id,
createdAt: document.updatedAt,
ip: ip || user.lastActiveIp,
},
{
transaction,
}
);
await transaction.commit();
return revision;
} catch (err) {
if (transaction) {
await transaction.rollback();
}
throw err;
}
}