thomas.richner
06/21/2022, 1:24 PMUseCase.1: Machine-readable file containing the name of objects as well as the name of possible relationships and permissions.
> allows generating the necessary string constants and can do basic validation of queries client-side
UseCase.2: Machine-readable file containing the name of objects as well as the name and type of possible relationships as well as the name of permissions.
> Allows generating type-safe builders for relationships. Helps creating/removing relationships.
UseCase.3: Machine-readable file containing the name of objects as well as the name and type of possible relationships. Furthermore, have all the predicate information for permissions.
> Allows generating type-safe code to create relationships and check permissions. E.g. generate type-safe methods for things such as `can<Permission><Object>(<Object>, <Subject>) which would then be canWriteDocument(Document d, User u) whereas Document and User are actual generated types and the method would check the document:<id>#write@user:<id> permission