Replies: 1 comment 2 replies
-
I'd like to add that this feels important so that I can write "dumb" integration code - ideally I could consume events from my system, transform those into relations, and write those relations in a batch, all without having to think about what's already stored. I should be able to write a relation multiple times - there are cases where it's preferred to have simpler integration code that might write twice, and prefer readable code vs over optimizing and ensuring a write only occurs once. As stated above, this becomes harder if I want to implement batching. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I find that asking a service to delete something that isn't there as being a soft error. Also writing something that is already there is also a soft error. I wrote a wrapper around the go-sdk writes that eats those errors and returns a nil. These are not errors to me.
That worked great until I started writing in batches.
This is the result.
The server did nothing. The tuple that was supposed to be deleted was not. I suspect that the server validates that everything I want deleted is there and if it isn't it bails out. All or nothing!
As a client user I would expect the following when writing.
A hard error for me is I try to write a tuple that isn't modeled. This includes deleting a tuple that doesn't match the model and obviously doesn't exist.
If I get my model right and only send in tuples that match, then I will NEVER get an error because everything is a soft error.
I would think that the settings for this are both server wide and per call, where the call one overrides the server-wide settings.
This is a soft error because it matched the model:
This is a hard error because there is no model for it.
Beta Was this translation helpful? Give feedback.
All reactions