| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 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');  }}
 |