Skip to content

Commit

Permalink
Finhis migration
Browse files Browse the repository at this point in the history
  • Loading branch information
rodrigok committed Aug 21, 2015
1 parent e110404 commit a7f1511
Showing 1 changed file with 62 additions and 62 deletions.
124 changes: 62 additions & 62 deletions server/startup/migrations/v15.coffee
Original file line number Diff line number Diff line change
@@ -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'

0 comments on commit a7f1511

Please sign in to comment.