Chung
07/22/2025, 12:22 AMsql
definition user {}
definition chart {
relation manager: user | usergroup#member | usergroup#manager
relation viewer: user | usergroup#member | usergroup#manager
relation organization: organization
permission manage = manager + organization->admin
permission view = viewer + manager + organization->admin
}
definition usergroup {
relation manager: user | usergroup#member | usergroup#manager
relation direct_member: user | usergroup#member | usergroup#manager
permission member = direct_member + manager
}
definition organization {
relation group: usergroup
relation administrator: user | usergroup#member | usergroup#manager
relation direct_member: user
permission admin = administrator
permission member = direct_member + administrator + group->member
}
definition datasource {
relation last_90_days: usergroup#member
permission limit_90_days = last_90_days
}
I am having trouble figuring out how I should design datasource
to maximise flexibility so that it works with
1. arbirtrary days, it can be 93 days, 2 days or 183 days.
2. a user can be an admin(unlimited) and also in mulitple groups(90 and 180 days), in this case, the user will not have limit on the dataset.
Here is a [Playground](https://play.authzed.com/s/adoH64dBv3H9/assertions)