Skip to main content

fiberplane_models/
events.rs

1use crate::timestamps::Timestamp;
2use base64uuid::Base64Uuid;
3#[cfg(feature = "fp-bindgen")]
4use fp_bindgen::prelude::Serializable;
5use serde::{Deserialize, Serialize};
6use std::collections::HashMap;
7use typed_builder::TypedBuilder;
8
9#[derive(Clone, Deserialize, Eq, PartialEq, Serialize, Debug, TypedBuilder)]
10#[cfg_attr(
11    feature = "fp-bindgen",
12    derive(Serializable),
13    fp(rust_module = "fiberplane_models::events")
14)]
15#[non_exhaustive]
16#[serde(rename_all = "camelCase")]
17pub struct Event {
18    /// Unique identifier associated with this event.
19    #[builder(setter(into))]
20    pub id: Base64Uuid,
21
22    /// The title describing the event.
23    #[builder(setter(into))]
24    pub title: String,
25
26    /// Labels associated with the event.
27    #[builder(default, setter(into))]
28    pub labels: HashMap<String, Option<String>>,
29
30    /// The moment the event occurred.
31    #[builder(setter(into))]
32    pub occurrence_time: Timestamp,
33
34    #[builder(setter(into))]
35    pub created_at: Timestamp,
36
37    #[builder(setter(into))]
38    pub updated_at: Timestamp,
39}
40
41#[derive(Clone, Default, Deserialize, Eq, PartialEq, Serialize, Debug, TypedBuilder)]
42#[cfg_attr(
43    feature = "fp-bindgen",
44    derive(Serializable),
45    fp(rust_module = "fiberplane_models::events")
46)]
47#[non_exhaustive]
48#[serde(rename_all = "camelCase")]
49pub struct NewEvent {
50    #[builder(setter(into))]
51    pub title: String,
52
53    #[builder(default, setter(into, strip_option))]
54    #[serde(default)]
55    pub labels: Option<HashMap<String, Option<String>>>,
56
57    #[builder(default, setter(into, strip_option))]
58    #[serde(default, skip_serializing_if = "Option::is_none")]
59    pub time: Option<Timestamp>,
60}