fiberplane_models/
tokens.rs1use 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}