This repository has been archived on 2022-08-14. You can view files and clone it, but cannot push or open issues or pull requests.
outline/server/commands/revisionCreator.js

45 lines
881 B
JavaScript

// @flow
import { Document, User, Event, Revision } from "../models";
import { sequelize } from "../sequelize";
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,
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;
}
}