optimistically load all docs

This commit is contained in:
Brian Gough 2017-06-27 16:58:20 +01:00
parent e10d09d040
commit b9b0596d83
2 changed files with 44 additions and 10 deletions

View file

@ -55,15 +55,26 @@ module.exports = DocManager =
return callback(err) return callback(err)
callback(err, doc) callback(err, doc)
getAllNonDeletedDocs: (project_id, filter, callback = (error, docs) ->) -> _getAllDocs: (project_id, filter, callback = (error, docs) ->) ->
DocArchive.unArchiveAllDocs project_id, (error) ->
if error?
return callback(error)
MongoManager.getProjectsDocs project_id, {include_deleted: false}, filter, (error, docs) -> MongoManager.getProjectsDocs project_id, {include_deleted: false}, filter, (error, docs) ->
if err? if err?
return callback(error) return callback(error)
else if !docs? else if !docs?
return callback new Errors.NotFoundError("No docs for project #{project_id}") return callback new Errors.NotFoundError("No docs for project #{project_id}")
else
callback(null, docs)
getAllNonDeletedDocs: (project_id, filter, callback = (error, docs) ->) ->
DocManager._getAllDocs project_id, filter, (error, docs) ->
return callback(error) if error?
# check if any docs have been archived
docsInS3 = (doc for doc in docs when doc?.inS3)
if docsInS3.length > 0
DocArchive.unArchiveAllDocs project_id, (error) ->
if error?
logger.err err:error, project_id:project_id, "error unarchiving docs"
return callback(error)
DocManager._getAllDocs project_id, filter, callback
else else
return callback(null, docs) return callback(null, docs)

View file

@ -215,6 +215,29 @@ describe "DocManager", ->
.calledWith(new Errors.NotFoundError("No docs for project #{@project_id}")) .calledWith(new Errors.NotFoundError("No docs for project #{@project_id}"))
.should.equal true .should.equal true
describe "when there are some archived docs for the project", ->
beforeEach ->
@stubs = [{ _id: @doc_id, project_id: @project_id, inS3:true }]
@docs = [{ _id: @doc_id, project_id: @project_id, lines: ["mock-lines"] }]
@MongoManager.getProjectsDocs = sinon.stub()
.callsArgWith(3, null, @stubs) # first call
.callsArgWith(3, null, @docs) # second call (after unarchiving)
@DocArchiveManager.unArchiveAllDocs = sinon.stub().callsArgWith(1, null)
@DocManager.getAllNonDeletedDocs @project_id, @filter, @callback
it "should get the project from the database", ->
@MongoManager.getProjectsDocs
.calledWith(@project_id, {include_deleted: false}, @filter)
.should.equal true
it "should unarchive the documents", ->
@DocArchiveManager.unArchiveAllDocs
.calledWith(@project_id)
.should.equal true
it "should return the docs", ->
@callback.calledWith(null, @docs).should.equal true
describe "deleteDoc", -> describe "deleteDoc", ->
describe "when the doc exists", -> describe "when the doc exists", ->
beforeEach -> beforeEach ->