Convert file uploads to model style

pull/2116/head
Rodrigo Nascimento 9 years ago
parent 244f8f02a9
commit ea9d008354
  1. 5
      lib/fileUpload.coffee
  2. 3
      packages/rocketchat-lib/package.js
  3. 6
      packages/rocketchat-lib/server/models/Uploads.coffee
  4. 2
      packages/rocketchat-lib/server/models/_Base.coffee
  5. 4
      server/methods/deleteMessage.coffee
  6. 2
      server/publications/roomFiles.coffee
  7. 2
      server/startup/migrations/v15.coffee
  8. 2
      server/startup/migrations/v20.coffee

@ -1,6 +1,5 @@
if UploadFS?
@fileCollection = new Mongo.Collection 'rocketchat_uploads'
fileCollection.allow
RocketChat.models.Uploads.model.allow
insert: (userId, doc) ->
return userId
@ -38,7 +37,7 @@ if UploadFS?
cookie.send()
Meteor.fileStore = new UploadFS.store.GridFS
collection: fileCollection
collection: RocketChat.models.Uploads.model
name: 'rocketchat_uploads'
collectionName: 'rocketchat_uploads'
filter: new UploadFS.Filter

@ -17,8 +17,10 @@ Package.onUse(function(api) {
api.use('tracker');
api.use('ddp-rate-limiter');
api.use('underscore');
api.use('mongo');
api.use('underscorestring:underscore.string');
api.use('monbro:mongodb-mapreduce-aggregation@1.0.1');
api.use('matb33:collection-hooks');
api.use('service-configuration');
api.use('check');
api.use('arunoda:streams');
@ -48,6 +50,7 @@ Package.onUse(function(api) {
api.addFiles('server/models/Rooms.coffee', 'server');
api.addFiles('server/models/Settings.coffee', 'server');
api.addFiles('server/models/Subscriptions.coffee', 'server');
api.addFiles('server/models/Uploads.coffee', 'server');
api.addFiles('server/models/Users.coffee', 'server');
// SERVER PUBLICATIONS

@ -0,0 +1,6 @@
RocketChat.models.Uploads = new class extends RocketChat.models._Base
constructor: ->
@_initModel 'uploads'
@tryEnsureIndex { 'rid': 1 }
@tryEnsureIndex { 'uploadedAt': 1 }

@ -5,7 +5,7 @@ RocketChat.models._Base = class
_initModel: (name) ->
check name, String
@model = new Meteor.Collection @_baseName() + name
@model = new Mongo.Collection @_baseName() + name
find: ->
return @model.find.apply @model, arguments

@ -25,14 +25,14 @@ Meteor.methods
RocketChat.models.Messages.setHiddenById originalMessage._id, true
if originalMessage.file?._id?
fileCollection.update originalMessage.file._id, {$set: {_hidden: true}}
RocketChat.models.Uploads.update originalMessage.file._id, {$set: {_hidden: true}}
else
if not showDeletedStatus
RocketChat.models.Messages.removeById originalMessage._id
if originalMessage.file?._id?
fileCollection.remove originalMessage.file._id
RocketChat.models.Uploads.remove originalMessage.file._id
Meteor.fileStore.delete originalMessage.file._id
if showDeletedStatus

@ -22,7 +22,7 @@ Meteor.publish 'roomFiles', (rid, limit = 50) ->
type: 1
url: 1
cursorFileListHandle = fileCollection.find(fileQuery, fileOptions).observeChanges
cursorFileListHandle = RocketChat.models.Uploads.find(fileQuery, fileOptions).observeChanges
added: (_id, record) ->
pub.added('room_files', _id, record)

@ -7,7 +7,7 @@ RocketChat.Migrations.add
oldGridFSCollection = new Meteor.Collection 'cfs_gridfs.files.files'
oldChunkCollection = new Meteor.Collection 'cfs_gridfs.files.chunks'
newFilesCollection = fileCollection
newFilesCollection = RocketChat.models.Uploads
newGridFSCollection = new Meteor.Collection 'rocketchat_uploads.files'
newChunkCollection = new Meteor.Collection 'rocketchat_uploads.chunks'

@ -20,7 +20,7 @@ RocketChat.Migrations.add
return unless cursorFileMessages.count()
_.each( cursorFileMessages.fetch(), (msg) ->
fileCollection.update({ _id: msg?.file?._id }, { $set: { rid: msg.rid } }, { $multi: true })
RocketChat.models.Uploads.update({ _id: msg?.file?._id }, { $set: { rid: msg.rid } }, { $multi: true })
)
console.log 'Updated rocketchat_uploads documents to include the room Id in which they were sent.'

Loading…
Cancel
Save