keepsake_sqlx/repository/
types.rs1use chrono::{DateTime, Utc};
2use keepsake::Keepsake;
3use serde::{Deserialize, Serialize};
4use sqlx::FromRow;
5use uuid::Uuid;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct MembershipCursor {
10 pub subject_kind: String,
12 pub subject_id: String,
14 pub keepsake_id: Uuid,
16}
17
18impl MembershipCursor {
19 #[must_use]
21 pub fn after(keepsake: &Keepsake) -> Self {
22 Self {
23 subject_kind: keepsake.subject().kind.clone(),
24 subject_id: keepsake.subject().id.clone(),
25 keepsake_id: keepsake.id(),
26 }
27 }
28}
29
30#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
32pub struct AppliedKeepsake {
33 pub keepsake: Keepsake,
35 pub duplicate_prevented: bool,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, FromRow)]
41pub struct TimedExpiryCandidate {
42 pub keepsake_id: Uuid,
44 pub relation_id: Uuid,
46 pub subject_kind: String,
48 pub subject_id: String,
50 pub due_at: DateTime<Utc>,
52}