Commit graph

8 commits

Author SHA1 Message Date
Vincent Ambo
406a90e8d6 feat(postgres): Implement initial (synchronous) actoin execution
Implements a simple model for executing actions which will run them in
sequence, synchronously, after advancing an FSM and committing the
initial transaction.

Note that multiple things are not yet taken into account:

* Error handling of actions (they can not currently fail)
* Retrying of actions
* Concurrency model

I started out by implementing the concurrency model similarly to the
green-threading method used in Hamingja (but using OS threads), but
slowly noticed that it may not be the best way to do that. It needs a
little bit of discussion.

Either way for most actions this method is fast enough to work for
implementing things on top of Finito's model.
2018-09-26 22:31:42 +02:00
Vincent Ambo
3891ba84d5 test(postgres): Add test for insert_machine and advance
Adds a test for the two most important functions in Finito's
PostgreSQL backend.

These actually require a local Postgres database to be available when
running. Currently the connection details are hardcoded in the test.
2018-09-26 18:44:16 +02:00
Vincent Ambo
7e5592f0d1 fix(postgres): Minor fixes in Postgres queries and handling 2018-09-26 18:43:53 +02:00
Vincent Ambo
6e35c083bf refactor(postgres): Minor changes to match actual table schema 2018-09-26 18:20:04 +02:00
Vincent Ambo
cbb58fa6c2 feat(postgres): Add initial table schema for Finito tables 2018-09-26 18:19:10 +02:00
Vincent Ambo
fe97c712cc docs: Add rustdoc header lines as expected by the format
These are rendered in the rustdoc crate overview sidebar.
2018-09-26 18:04:28 +02:00
Vincent Ambo
40caa5ffa2 feat(postgres): Implement Postgres-backed 'advance' function
Transactionally updates a state machine with an incoming event. Note
that this does not yet interpret actions.
2018-09-26 17:28:45 +02:00
Vincent Ambo
b1e00ff026 feat(postgres): Bootstrap Postgres persistence implementation
Adds the initial finito-postgres crate with type definitions for the
tables and initial functions to interact with persisted FSMs.

This is far from feature complete at this commit.
2018-09-26 16:54:06 +02:00