fiberplane_models/
tokens.rs

1use base64uuid::Base64Uuid;
2#[cfg(feature = "fp-bindgen")]
3use fp_bindgen::prelude::Serializable;
4use serde::{Deserialize, Serialize};
5use time::OffsetDateTime;
6use typed_builder::TypedBuilder;
7
8#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
9#[cfg_attr(
10    feature = "fp-bindgen",
11    derive(Serializable),
12    fp(rust_module = "fiberplane_models::tokens")
13)]
14#[non_exhaustive]
15#[serde(rename_all = "camelCase")]
16pub struct TokenSummary {
17    pub id: Base64Uuid,
18    pub title: String,
19    #[serde(with = "time::serde::rfc3339")]
20    pub created_at: OffsetDateTime,
21    #[serde(default, with = "time::serde::rfc3339::option")]
22    pub expires_at: Option<OffsetDateTime>,
23}
24
25#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
26#[cfg_attr(
27    feature = "fp-bindgen",
28    derive(Serializable),
29    fp(rust_module = "fiberplane_models::tokens")
30)]
31#[non_exhaustive]
32#[serde(rename_all = "camelCase")]
33pub struct NewToken {
34    pub title: String,
35}
36
37impl NewToken {
38    pub fn new(title: impl Into<String>) -> Self {
39        Self {
40            title: title.into(),
41        }
42    }
43}
44
45#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
46#[cfg_attr(
47    feature = "fp-bindgen",
48    derive(Serializable),
49    fp(rust_module = "fiberplane_models::tokens")
50)]
51#[non_exhaustive]
52#[serde(rename_all = "camelCase")]
53pub struct Token {
54    pub id: Base64Uuid,
55    pub title: String,
56    pub token: String,
57    #[serde(with = "time::serde::rfc3339")]
58    pub created_at: OffsetDateTime,
59    #[serde(default, with = "time::serde::rfc3339::option")]
60    pub expires_at: Option<OffsetDateTime>,
61}