parent
672c2f5b40
commit
1b7f93efbc
@ -0,0 +1,77 @@ |
||||
@exec = -> |
||||
# Meteor.startup -> |
||||
# Migrations.add |
||||
# version: 15 |
||||
# up: -> |
||||
|
||||
console.log 'Starting file migration' |
||||
oldFilesCollection = new Meteor.Collection 'cfs.Files.filerecord' |
||||
oldGridFSCollection = new Meteor.Collection 'cfs_gridfs.files.files' |
||||
oldChunkCollection = new Meteor.Collection 'cfs_gridfs.files.chunks' |
||||
|
||||
newFilesCollection = fileCollection |
||||
newGridFSCollection = new Meteor.Collection 'rocketchat_uploads.files' |
||||
newChunkCollection = new Meteor.Collection 'rocketchat_uploads.chunks' |
||||
|
||||
|
||||
oldFilesCollection.find().forEach (cfsRecord) -> |
||||
nameParts = cfsRecord.original.name?.split('.') |
||||
extension = '' |
||||
url = "ufs/rocketchat_uploads/#{cfsRecord._id}" |
||||
|
||||
console.log 'migrating file', url |
||||
|
||||
if nameParts?.length > 1 |
||||
extension = nameParts.pop() |
||||
url = url + '.' + extension |
||||
|
||||
record = |
||||
_id: cfsRecord._id |
||||
name: cfsRecord.original.name or '' |
||||
size: cfsRecord.original.size |
||||
type: cfsRecord.original.type |
||||
complete: true |
||||
uploading: false |
||||
store: "rocketchat_uploads" |
||||
extension: extension |
||||
userId: cfsRecord.userId |
||||
uploadedAt: cfsRecord.updatedAt |
||||
url: Meteor.absoluteUrl() + url |
||||
|
||||
newFilesCollection.insert record |
||||
|
||||
oldGridFsFile = oldGridFSCollection.findOne({_id: new Meteor.Collection.ObjectID(cfsRecord.copies.files.key)}) |
||||
|
||||
newGridFSCollection.insert |
||||
_id: cfsRecord._id |
||||
filename: cfsRecord._id |
||||
contentType: oldGridFsFile.contentType |
||||
length: oldGridFsFile.length |
||||
chunkSize: oldGridFsFile.chunkSize |
||||
uploadDate: oldGridFsFile.uploadDate |
||||
aliases: null |
||||
metadata: null |
||||
md5: oldGridFsFile.md5 |
||||
|
||||
oldChunkCollection.find({files_id: new Meteor.Collection.ObjectID(cfsRecord.copies.files.key)}).forEach (oldChunk) -> |
||||
newChunkCollection.insert |
||||
_id: oldChunk._id |
||||
files_id: cfsRecord._id |
||||
n: oldChunk.n |
||||
data: oldChunk.data |
||||
|
||||
ChatMessage.find({ 'urls.url': "#{Meteor.absoluteUrl()}cfs/files/Files/#{cfsRecord._id}" }).forEach (message) -> |
||||
for urlsItem in message.urls |
||||
if urlsItem.url is "#{Meteor.absoluteUrl()}cfs/files/Files/#{cfsRecord._id}" |
||||
urlsItem.url = Meteor.absoluteUrl() + url |
||||
if urlsItem.parsedUrl?.pathname? |
||||
urlsItem.parsedUrl.pathname = "/#{url}" |
||||
message.msg = message.msg.replace "#{Meteor.absoluteUrl()}cfs/files/Files/#{cfsRecord._id}", Meteor.absoluteUrl() + url |
||||
|
||||
ChatMessage.update {_id: message._id}, {$set: {urls: message.urls, msg: message.msg}} |
||||
|
||||
oldFilesCollection.remove _id: cfsRecord._id |
||||
oldGridFSCollection.remove _id: oldGridFsFile._id |
||||
oldChunkCollection.remove files_id: new Meteor.Collection.ObjectID(cfsRecord.copies.files.key) |
||||
|
||||
console.log 'End of file migration' |
||||
Loading…
Reference in new issue