From a7f151113e74aef7c266614bbb9e29ac16d3a48c Mon Sep 17 00:00:00 2001 From: Rodrigo Nascimento Date: Fri, 21 Aug 2015 07:39:33 -0300 Subject: [PATCH] Finhis migration --- server/startup/migrations/v15.coffee | 124 +++++++++++++-------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/server/startup/migrations/v15.coffee b/server/startup/migrations/v15.coffee index 2e6f64bc44e5..fda6e7b2a1e7 100644 --- a/server/startup/migrations/v15.coffee +++ b/server/startup/migrations/v15.coffee @@ -1,77 +1,77 @@ -@exec = -> -# Meteor.startup -> - # Migrations.add - # version: 15 - # up: -> +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' + 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' + 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}" + oldFilesCollection.find({'copies.files.key': {$exists: true}}).forEach (cfsRecord) -> + nameParts = cfsRecord.original.name?.split('.') + extension = '' + url = "ufs/rocketchat_uploads/#{cfsRecord._id}" - console.log 'migrating file', url + console.log 'migrating file', url - if nameParts?.length > 1 - extension = nameParts.pop() - url = url + '.' + extension + 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 + 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 + newFilesCollection.insert record - oldGridFsFile = oldGridFSCollection.findOne({_id: new Meteor.Collection.ObjectID(cfsRecord.copies.files.key)}) + 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 + 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 + 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.find({$or: [{ 'urls.url': "https://demo.rocket.chat/cfs/files/Files/#{cfsRecord._id}" }, { 'urls.url': "https://rocket.chat/cfs/files/Files/#{cfsRecord._id}" }]}).forEach (message) -> + for urlsItem in message.urls + if urlsItem.url is "https://demo.rocket.chat/cfs/files/Files/#{cfsRecord._id}" or urlsItem.url is "https://rocket.chat/cfs/files/Files/#{cfsRecord._id}" + urlsItem.url = Meteor.absoluteUrl() + url + if urlsItem.parsedUrl?.pathname? + urlsItem.parsedUrl.pathname = "/#{url}" + message.msg = message.msg.replace "https://demo.rocket.chat/cfs/files/Files/#{cfsRecord._id}", Meteor.absoluteUrl() + url + message.msg = message.msg.replace "https://rocket.chat/cfs/files/Files/#{cfsRecord._id}", Meteor.absoluteUrl() + url - ChatMessage.update {_id: message._id}, {$set: {urls: message.urls, msg: message.msg}} + 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) + 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' + console.log 'End of file migration'