fiberplane_models/
events.rs1use 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 #[builder(setter(into))]
20 pub id: Base64Uuid,
21
22 #[builder(setter(into))]
24 pub title: String,
25
26 #[builder(default, setter(into))]
28 pub labels: HashMap<String, Option<String>>,
29
30 #[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}