Releases: dolittle/Contracts
Release v5.4.0
Summary
Adds Embeddings services and messages
Added
- Service and messages for registering, comparing and projecting Embeddings
- Service and messages for getting Embeddings
- Service and messages for updating and deleting Embeddings
Prerelease v5.4.0-embeddings.3
Summary
Firstly, I have added a method for getting all the keys for an Embedding from the EmbeddingStore, this is most likely the call that will be used externally (to figure out what to delete), and should save a bit of time and effort for doing that.
Secondly, I change the event we are sending over to the Head when projecting an event to be an UncommittedEvent. We are going to be projecting both uncommitted and committed events, so the least common structure would be the uncommitted event. This means that there will be less available information about the event itself (as it has not been stored yet), but still most of what we need (ExecutionContect) will still be in the ReverseCallRequestContext.
Added
- Method for getting all keys for an Embedding. This will be useful to have, and should save some time for a few operations.
Changed
- From a StreamEvent to UncommittedEvent when asking the Head to project an event in an Embedding.
EmbeddingsStore
->EmbeddingStore
to be consistent with e.g.EventStore
.
Prerelease v5.4.0-embeddings.2
- Mostly a copypasta from Projections/Store
- Removed
ScopeId
from the requests (not needed for embeddings) - Added the untracked Generation/Artifacts folder to
.gitignore
. I think that folder is just automatically created bydotnet build
, and it only contains the generated doc.xml
file.
I also now realised, that we have structured this differently from Projections. The Projections.proto
files with the registration code is inside Events.Processing folder, not Projections. Maybe Embeddings.proto
should then also get moved to Events.Processing?
Prerelease v5.4.0-embeddings.1
EmbeddingRequest
is now aoneof
of eitherEmbeddingCompareRequest
/EmbeddingDeleteRequest
/ProjectionRequest
EmbeddingDeleteRequest
is an empty message as we don't need any more info.EmbeddingResponse
is aoneof
ofEmbeddingCompareResponse
/ProjectionResponse
- Renamed some of the properties to have request or response in their names respectively.
- Organized the Embeddings.proto into groupings based on client->runtime or runtime->client messages and added small comments showing the blocks (got too excited for the idea of creating docs out of this some day with a tool like https://github.com/pseudomuto/protoc-gen-doc
- Added quick build instructions to the readme
Prerelease v5.4.0-embeddings.0
Summary
Added an embeddings service, that has three endpoints:
Connect, for registering an embedding:
An embedding is an extension of a projection (only allowed on the default scope), that also handles compare requests.
When the external state of an embedding changes, the embedding will be called to compare the externally provided state and the current state of the projection that has the same key. The method is expected to return a set of events that move the projection state closer to the external state. These events are committed and used to update the projection. This process will be repeated until the external and projection states are equal.
Update, for asking the runtime to start an update process:
At any time, the runtime can be called with a state for a given embedding id and key. If the state is not equal to the current state, the process described above will kick in. When the states are equal, the runtime will reply with the projected state. If it is not possible to reach the provided state for the specified embedding, the runtime will reply with a failure and not commit any events.
Delete, for asking the runtime to start an update process that results in a deletion:
This endpoint triggers the same behaviour as the Update endpoint, but where the desired state is that the given embedding id and key should not exist.
Note: for getting the current state of embeddings, the projections endpoint can be used with the embedding id as the state of embeddings are stored using projections.
Added
- Service for registering an embedding, and for updating and deleting the state
Release v5.3.0
Summary
Added support for imperative Projections, and releasing of generated Go code, and some minor cleanup of code generations scripts.
Added
- Service for registering Projections
- Service for getting Projection States
- Release module workflow for Go (https://go.dolittle.io/contracts/v5)
Changed
- Moved things around in the code generation (Fundamentals+Runtime top level -> Language top level)
- Removed generated fundamentals code in @dolittle/runtime.contracts, and added dependency
- Removed
Runtime/
Fundamentals/
directories in JS pacakges
Removed
- Code generation for JavaScript.Web using gRPC web, since we are currently not using it and it was not working.
Prerelease v5.3.0-projections.11
Merge pull request #47 from dolittle/change-enums-to-oneofs Changed enums to oneofs
Prerelease v5.3.0-projections.10
Summary
Started with the need of getting back the projection key when getting states from the Runtime. Lead into a little bit of moving things around and cleaning up.
Changed
- Moved
Key
fromProjectionRequest
->ProjectionCurrentState
so that it gets returned by the projection store as well. - Moved the
ProjectionCurrentState
over toRuntime/Projections/State.proto
- it felt like it wanted to be there.
Prerelease v5.3.0-projections.9
Summary
Adds the functionality of getting projections
Added
- Service for getting projections
Prerelease v5.3.0-projections.8
Summary
Fixed releasing of Go generated code when nothing has changed.
Fixed
- Use
git commit --allow-empty ...
to release a new Go version even if nothing has changed