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
Saumya Pandey f389ac6414
fix: Improvements in share feat (#2502)
* Make request only when popover is visible

* Update policies required for shares.create shares.update

* Create withCollection scope

* Remove team share check from shares.create

* Update tests
2021-08-29 10:44:09 +05:30

77 lines
1.6 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,
includeChildDocuments: DataTypes.BOOLEAN,
revokedAt: DataTypes.DATE,
revokedById: DataTypes.UUID,
lastAccessedAt: DataTypes.DATE,
},
{
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", paranoid: false },
{ association: "document" },
{ association: "team" },
],
});
Share.addScope("withCollection", (userId) => {
return {
include: [
{
model: models.Document,
paranoid: true,
as: "document",
include: [
{
model: models.Collection.scope({
method: ["withMembership", userId],
}),
as: "collection",
},
],
},
{ association: "user", paranoid: false },
{ association: "team" },
],
};
});
};
Share.prototype.revoke = function (userId) {
this.revokedAt = new Date();
this.revokedById = userId;
return this.save();
};
export default Share;