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
Tom Moor 44920a25f4
feat: Nested document sharing (#2075)
* migration

* frontend routing, api permissioning

* feat: apiVersion=2

* feat: re-writing document links to point to share

* poc nested documents on share links

* fix: nested shareId permissions

* ui and language tweaks, comments

* breadcrumbs

* Add icons to reference list items

* refactor: Breadcrumb component

* tweaks

* Add shared parent note
2021-05-22 19:34:05 -07:00

56 lines
1.1 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.prototype.revoke = function (userId) {
this.revokedAt = new Date();
this.revokedById = userId;
return this.save();
};
export default Share;