Issue just for better development process: so I could mention issue number in commits and other could see near future plans
Problem
Using akka actors is good for asynchronous operations, but it too verbose for developers.
Also using actor pattern, it becomes hard to understand data flow
Solution
Use akka streams for abstraction over HTTP/Request and responses
Expected result
I would like to have something like:
val new Scarango(context)
//...
Source.fromFuture[Documents](scarango.byExample("{a:{c:1}}"))
.runForeach(println(_))
.filter(raw => toProduct(raw).price < 5)
.map(_.getId)
.map(scarango.Remove)
Getting results using Source notation
Writing to database using Flow notation (so errors or success could be dealt with)
Final goal
I could work with data flow like a stream:
Store to database, while still receiving from stow connection
Start responding to user, while not all elements are fetched from database (is it possible from ArangoDB side? - not yet - need stream based JSON parser)
Tasks
[x] GetVersion: infrastructure to get request using reactive streams
[x] CreateDatabase: infrastructure to store to database
[x] GetAllDocuments: to test responding to user, while still reading from database
[x] StoreRawDocument: to test back-pressure from database to initial client
[x] CRUD for Collections: to have self contained tests
[x] CRUD for Database: to have fully functional tests (for test _system database could be used)
[x] Other functional compatibility to meet v0.2.4
[x] Solution/Tests for error handling
[x] Documentation, code quality: readiness for end-usage
Using
akka
actors is good for asynchronous operations, but it too verbose for developers. Also using actor pattern, it becomes hard to understand data flowSolution
Use akka streams for abstraction over HTTP/Request and responses
Expected result
I would like to have something like:
Source
notationFlow
notation (so errors or success could be dealt with)Final goal
I could work with data flow like a stream:
Tasks
reactive streams
back-pressure
from database to initial client_system
database could be used)v0.2.4