The current read function used for fetching data in chaise switches between entity and attributegroup. Given that the implementation details are hidden from data modelers, we might want to consider adding a way to force the entity API.
The following is why we're using attributegroup:
If the table has dynamic ACLs, we have to use this API to use trs/tcrs APIs to get the proper per-row permissions.
If we need to fetch data for all-outbound foreign keys that are either visible, part of wait-for, or defined in the fkeys property of source-definitions annotation.
So if,
The static users ACLs are known;
There aren't any visible all-outbounds; and
fkeys in source-definitions is set to false.
Then we will switch to entity.
In my opinion, if we want to add a new annotation, we would have to honor it even if there are dynamic ACLs or visible all-outbounds. This way data modelers only need to set one annotation without worrying about other things. Although, this can cause degraded UX since we cannot support dynamic ACL or show data for all-outbounds anymore and it might be even more confusing.
P.S. This requires more thought. I created this issue to document the conversation in slack.
The current
read
function used for fetching data in chaise switches betweenentity
andattributegroup
. Given that the implementation details are hidden from data modelers, we might want to consider adding a way to force theentity
API.The following is why we're using
attributegroup
:trs
/tcrs
APIs to get the proper per-row permissions.wait-for
, or defined in thefkeys
property ofsource-definitions
annotation.So if,
fkeys
insource-definitions
is set tofalse
.Then we will switch to
entity
.In my opinion, if we want to add a new annotation, we would have to honor it even if there are dynamic ACLs or visible all-outbounds. This way data modelers only need to set one annotation without worrying about other things. Although, this can cause degraded UX since we cannot support dynamic ACL or show data for all-outbounds anymore and it might be even more confusing.
P.S. This requires more thought. I created this issue to document the conversation in slack.