gatekeep_keepsake/
target.rs1use chrono::{DateTime, Utc};
2use gatekeep::{FactId, SubjectSlot};
3use keepsake::{CommandContext, RelationId, RevokeBySubject, SubjectRef};
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(&self, at: DateTime<Utc>, context: CommandContext) -> RevokeBySubject {
24 RevokeBySubject::new(
25 self.tenant_id.clone(),
26 self.subject.clone(),
27 self.relation_id,
28 at,
29 context,
30 )
31 }
32}