longevity icon indicating copy to clipboard operation
longevity copied to clipboard

In place updates for MongoDB back end

Open sullivan- opened this issue 7 years ago • 0 comments

Implement Repo.inplace.updateByKeyVal and Repo.inplace.updateByQuery to do updates "in place", or on the database.

  • See #43 for discussion of Repo.inplace
  • Depends on #44.
  • The first has two arguments: UpdateClause and key value. See Repo.retrieve for how to properly constrain the type of the key value. See how Query is constrained in Repo.queryBy* methods to see how to constrain the UpdateClause.
  • The second has two arguments: UpdateClause and Query.
  • Make it so! Examine how query objects are translated into mongo queries in MongoQuery to get some ideas on how to form the update clause.
  • You should probably write an implementation for InMem back end at the same time; It won't be that hard.
  • Attempting these operations on a JDBC or Cassandra back end can just throw exception for now.
  • Add an integration test for updateByKeyVal in RepoCrudSpec. It should avoid running if the back end is not supported.
  • Add integration tests for updateByQuery in longevity.integration.queries. How to design the tests and just how many we need to cover cases will require some thought. Please try to keep reasonably minimal because these kinds of tests are expensive.

sullivan- avatar Sep 22 '17 20:09 sullivan-