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/models/Share.js

54 lines
1.0 KiB
JavaScript

// @flow
import { DataTypes, sequelize } from "../sequelize";
const Share = sequelize.define(
"share",
{
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
published: DataTypes.BOOLEAN,
revokedAt: DataTypes.DATE,
revokedById: DataTypes.UUID,
},
{
getterMethods: {
isRevoked() {
return !!this.revokedAt;
},
},
}
);
Share.associate = (models) => {
Share.belongsTo(models.User, {
as: "user",
foreignKey: "userId",
});
Share.belongsTo(models.Team, {
as: "team",
foreignKey: "teamId",
});
Share.belongsTo(models.Document.scope("withUnpublished"), {
as: "document",
foreignKey: "documentId",
});
Share.addScope("defaultScope", {
include: [
{ association: "user" },
{ association: "document" },
{ association: "team" },
],
});
};
Share.prototype.revoke = function (userId) {
this.revokedAt = new Date();
this.revokedById = userId;
return this.save();
};
export default Share;