Add tuple get/set for object properties (Issue #19) #61
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently tuples only support scalar properties. This patch adds basic support for objects (map[string]interface{}). Basic unit tests are included. This relates to #19.
We need this in a project to avoid considerable work in flattening existing request objects.
Since objects are mutable they are not allowed as tuple keys, this is prevented with a small change in tupledescriptor.UmarshalJSON. The other main limitation is that if an object is mutated in an action it will need to be set again with tuple.SetObject() in order to re-run the change listeners. The 'object' contents can be accessed via type assertions which is better than not having anything. Alternatively something like https://github.com/mitchellh/mapstructure can be used to get a real structure, or you can marshal->json->unmarshal->structure.
The resource file can be set up with the following to make it work with a REST trigger:
And the tuple descriptor:
POST content: