Copy attachment copies now all versions

- for now only the version "original" exists, but as other method already
  consider that other version's can exist
pull/4646/head
Martin Filser 3 years ago
parent e37bf2b51d
commit 1516615934
  1. 89
      models/lib/fileStoreStrategy.js

@ -353,56 +353,57 @@ export const moveToStorage = function(fileObj, storageDestination, fileStoreStra
};
export const copyFile = function(fileObj, newCardId, fileStoreStrategyFactory) {
const versionName = "original";
const strategyRead = fileStoreStrategyFactory.getFileStrategy(fileObj, versionName);
const readStream = strategyRead.getReadStream();
const strategyWrite = fileStoreStrategyFactory.getFileStrategy(fileObj, versionName, STORAGE_NAME_FILESYSTEM);
Object.keys(fileObj.versions).forEach(versionName => {
const strategyRead = fileStoreStrategyFactory.getFileStrategy(fileObj, versionName);
const readStream = strategyRead.getReadStream();
const strategyWrite = fileStoreStrategyFactory.getFileStrategy(fileObj, versionName, STORAGE_NAME_FILESYSTEM);
const tempPath = path.join(fileStoreStrategyFactory.storagePath, Random.id() + "-" + versionName + "-" + fileObj.name);
const writeStream = strategyWrite.getWriteStream(tempPath);
const tempPath = path.join(fileStoreStrategyFactory.storagePath, Random.id() + "-" + versionName + "-" + fileObj.name);
const writeStream = strategyWrite.getWriteStream(tempPath);
writeStream.on('error', error => {
console.error('[writeStream error]: ', error, fileObj._id);
});
writeStream.on('error', error => {
console.error('[writeStream error]: ', error, fileObj._id);
});
readStream.on('error', error => {
console.error('[readStream error]: ', error, fileObj._id);
});
readStream.on('error', error => {
console.error('[readStream error]: ', error, fileObj._id);
});
// https://forums.meteor.com/t/meteor-code-must-always-run-within-a-fiber-try-wrapping-callbacks-that-you-pass-to-non-meteor-libraries-with-meteor-bindenvironmen/40099/8
readStream.on('end', Meteor.bindEnvironment(() => {
const fileId = Random.id();
Attachments.addFile(
tempPath,
{
fileName: fileObj.name,
type: fileObj.type,
meta: {
boardId: fileObj.meta.boardId,
cardId: newCardId,
listId: fileObj.meta.listId,
swimlaneId: fileObj.meta.swimlaneId,
source: 'copy',
copyFrom: fileObj._id,
copyStorage: strategyRead.getStorageName(),
// https://forums.meteor.com/t/meteor-code-must-always-run-within-a-fiber-try-wrapping-callbacks-that-you-pass-to-non-meteor-libraries-with-meteor-bindenvironmen/40099/8
readStream.on('end', Meteor.bindEnvironment(() => {
const fileId = Random.id();
Attachments.addFile(
tempPath,
{
fileName: fileObj.name,
type: fileObj.type,
meta: {
boardId: fileObj.meta.boardId,
cardId: newCardId,
listId: fileObj.meta.listId,
swimlaneId: fileObj.meta.swimlaneId,
source: 'copy',
copyFrom: fileObj._id,
copyStorage: strategyRead.getStorageName(),
},
userId: fileObj.userId,
size: fileObj.fileSize,
fileId,
},
userId: fileObj.userId,
size: fileObj.fileSize,
fileId,
},
(err, fileRef) => {
if (err) {
console.log(err);
} else {
// Set the userId again
Attachments.update({ _id: fileRef._id }, { $set: { userId: fileObj.userId } });
}
},
true,
);
}));
(err, fileRef) => {
if (err) {
console.log(err);
} else {
// Set the userId again
Attachments.update({ _id: fileRef._id }, { $set: { userId: fileObj.userId } });
}
},
true,
);
}));
readStream.pipe(writeStream);
readStream.pipe(writeStream);
});
};
export const rename = function(fileObj, newName, fileStoreStrategyFactory) {

Loading…
Cancel
Save