Init migration for jalik-ufs

pull/518/head
Rodrigo Nascimento 11 years ago
parent 672c2f5b40
commit 1b7f93efbc
  1. 2
      .meteor/versions
  2. 2
      lib/fileUpload.coffee
  3. 77
      server/startup/migrations/v15.coffee

@ -36,7 +36,7 @@ html-tools@1.0.4
htmljs@1.0.4
http@1.1.0
id-map@1.0.3
jalik:ufs@0.2.6
jalik:ufs@0.2.7
jalik:ufs-gridfs@0.1.0
jparker:crypto-core@0.1.0
jparker:crypto-md5@0.1.1

@ -1,5 +1,5 @@
if UploadFS?
fileCollection = new Mongo.Collection 'rocketchat_uploads'
@fileCollection = new Mongo.Collection 'rocketchat_uploads'
fileCollection.allow
insert: (userId, doc) ->

@ -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…
Cancel
Save