fiberplane_models/
snippets.rs

1use 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}