Skip to content
Snippets Groups Projects
Commit a7f15111 authored by Rodrigo Nascimento's avatar Rodrigo Nascimento
Browse files

Finhis migration

parent e1104048
No related branches found
No related tags found
No related merge requests found
@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'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment