mirror of
https://github.com/wekan/wekan.git
synced 2025-09-22 01:50:48 +02:00
101 lines
3 KiB
JavaScript
101 lines
3 KiB
JavaScript
import fs from 'fs';
|
|
import FileStoreStrategy, {FileStoreStrategyFilesystem, FileStoreStrategyGridFs, FileStoreStrategyS3} from './fileStoreStrategy'
|
|
|
|
const insertActivity = (fileObj, activityType) =>
|
|
Activities.insert({
|
|
userId: fileObj.userId,
|
|
type: 'card',
|
|
activityType,
|
|
attachmentId: fileObj._id,
|
|
attachmentName: fileObj.name,
|
|
boardId: fileObj.meta.boardId,
|
|
cardId: fileObj.meta.cardId,
|
|
listId: fileObj.meta.listId,
|
|
swimlaneId: fileObj.meta.swimlaneId,
|
|
});
|
|
|
|
/** Strategy to store attachments at GridFS (MongoDB) */
|
|
export class AttachmentStoreStrategyGridFs extends FileStoreStrategyGridFs {
|
|
|
|
/** constructor
|
|
* @param gridFsBucket use this GridFS Bucket
|
|
* @param fileObj the current file object
|
|
* @param versionName the current version
|
|
*/
|
|
constructor(gridFsBucket, fileObj, versionName) {
|
|
super(gridFsBucket, fileObj, versionName);
|
|
}
|
|
|
|
/** after successfull upload */
|
|
onAfterUpload() {
|
|
super.onAfterUpload();
|
|
// If the attachment doesn't have a source field or its source is different than import
|
|
if (!this.fileObj.meta.source || this.fileObj.meta.source !== 'import') {
|
|
// Add activity about adding the attachment
|
|
insertActivity(this.fileObj, 'addAttachment');
|
|
}
|
|
}
|
|
|
|
/** after file remove */
|
|
onAfterRemove() {
|
|
super.onAfterRemove();
|
|
insertActivity(this.fileObj, 'deleteAttachment');
|
|
}
|
|
}
|
|
|
|
/** Strategy to store attachments at filesystem */
|
|
export class AttachmentStoreStrategyFilesystem extends FileStoreStrategyFilesystem {
|
|
|
|
/** constructor
|
|
* @param fileObj the current file object
|
|
* @param versionName the current version
|
|
*/
|
|
constructor(fileObj, versionName) {
|
|
super(fileObj, versionName);
|
|
}
|
|
|
|
/** after successfull upload */
|
|
onAfterUpload() {
|
|
super.onAfterUpload();
|
|
// If the attachment doesn't have a source field or its source is different than import
|
|
if (!this.fileObj.meta.source || this.fileObj.meta.source !== 'import') {
|
|
// Add activity about adding the attachment
|
|
insertActivity(this.fileObj, 'addAttachment');
|
|
}
|
|
}
|
|
|
|
/** after file remove */
|
|
onAfterRemove() {
|
|
super.onAfterRemove();
|
|
insertActivity(this.fileObj, 'deleteAttachment');
|
|
}
|
|
}
|
|
|
|
/** Strategy to store attachments at filesystem */
|
|
export class AttachmentStoreStrategyS3 extends FileStoreStrategyS3 {
|
|
|
|
/** constructor
|
|
* @param s3Bucket use this S3 Bucket
|
|
* @param fileObj the current file object
|
|
* @param versionName the current version
|
|
*/
|
|
constructor(s3Bucket, fileObj, versionName) {
|
|
super(s3Bucket, fileObj, versionName);
|
|
}
|
|
|
|
/** after successfull upload */
|
|
onAfterUpload() {
|
|
super.onAfterUpload();
|
|
// If the attachment doesn't have a source field or its source is different than import
|
|
if (!this.fileObj.meta.source || this.fileObj.meta.source !== 'import') {
|
|
// Add activity about adding the attachment
|
|
insertActivity(this.fileObj, 'addAttachment');
|
|
}
|
|
}
|
|
|
|
/** after file remove */
|
|
onAfterRemove() {
|
|
super.onAfterRemove();
|
|
insertActivity(this.fileObj, 'deleteAttachment');
|
|
}
|
|
}
|