gatekeep_keepsake/
target.rs1use gatekeep::{FactId, SubjectSlot};
2use keepsake::{CommandContext, RelationId, RevokeBySubject, SubjectRef};
3use time::OffsetDateTime;
4
5#[derive(Clone, Debug, PartialEq, Eq)]
7pub struct KeepsakeRelationTarget {
8 pub tenant_id: keepsake::TenantId,
10 pub fact: FactId,
12 pub subject: SubjectRef,
14 pub relation_id: RelationId,
16 pub subject_slot: Option<SubjectSlot>,
18}
19
20impl KeepsakeRelationTarget {
21 #[must_use]
23 pub fn revoke_by_subject(
24 &self,
25 at: OffsetDateTime,
26 context: CommandContext,
27 ) -> RevokeBySubject {
28 RevokeBySubject::new(
29 self.tenant_id.clone(),
30 self.subject.clone(),
31 self.relation_id,
32 at,
33 context,
34 )
35 }
36}