fiberplane_models/
snippets.rs1use crate::names::Name;
2use crate::timestamps::Timestamp;
3use base64uuid::Base64Uuid;
4#[cfg(feature = "fp-bindgen")]
5use fp_bindgen::prelude::Serializable;
6use serde::{Deserialize, Serialize};
7use typed_builder::TypedBuilder;
8
9#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq, TypedBuilder)]
10#[cfg_attr(
11 feature = "fp-bindgen",
12 derive(Serializable),
13 fp(rust_module = "fiberplane_models::snippets")
14)]
15#[non_exhaustive]
16#[serde(rename_all = "camelCase")]
17pub struct Snippet {
18 pub id: Base64Uuid,
19 pub name: Name,
20 pub description: String,
21 pub body: String,
22 pub created_at: Timestamp,
23 pub updated_at: Timestamp,
24}
25
26#[derive(Debug, Deserialize, Serialize, Clone, PartialEq, Eq, TypedBuilder)]
27#[cfg_attr(
28 feature = "fp-bindgen",
29 derive(Serializable),
30 fp(rust_module = "fiberplane_models::snippets")
31)]
32#[non_exhaustive]
33#[serde(rename_all = "camelCase")]
34pub struct SnippetSummary {
35 pub id: Base64Uuid,
36 pub name: Name,
37 pub description: String,
38 pub created_at: Timestamp,
39 pub updated_at: Timestamp,
40}
41
42#[derive(Debug, Deserialize, Serialize, Clone, TypedBuilder)]
43#[cfg_attr(
44 feature = "fp-bindgen",
45 derive(Serializable),
46 fp(rust_module = "fiberplane_models::snippets")
47)]
48#[non_exhaustive]
49#[serde(rename_all = "camelCase")]
50pub struct NewSnippet {
51 pub name: Name,
52 #[builder(default, setter(into))]
53 #[serde(default)]
54 pub description: String,
55 #[builder(setter(into))]
56 pub body: String,
57}
58
59#[derive(Debug, Deserialize, Serialize, Clone, TypedBuilder)]
60#[cfg_attr(
61 feature = "fp-bindgen",
62 derive(Serializable),
63 fp(rust_module = "fiberplane_models::snippets")
64)]
65#[non_exhaustive]
66#[serde(rename_all = "camelCase")]
67pub struct UpdateSnippet {
68 #[builder(default, setter(into))]
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub description: Option<String>,
71 #[builder(default, setter(into))]
72 #[serde(default, skip_serializing_if = "Option::is_none")]
73 pub body: Option<String>,
74}