agentic_core/utils/
common.rs1use chrono::Utc;
2use uuid::Uuid;
3
4#[must_use]
5pub fn uuid7_str(prefix: &str) -> String {
6 format!("{}{}", prefix, Uuid::now_v7())
7}
8
9#[must_use]
10pub fn utcnow_str() -> i64 {
11 Utc::now().timestamp()
12}
13
14pub fn serialize_to_string<T: serde::Serialize>(value: &T) -> Result<String, serde_json::Error> {
23 serde_json::to_string(value)
24}
25
26pub fn deserialize_from_str<T: serde::de::DeserializeOwned>(json_str: &str) -> Result<T, serde_json::Error> {
35 serde_json::from_str(json_str)
36}
37
38#[must_use]
43pub fn deserialize_from_str_or_default<T: serde::de::DeserializeOwned + Default>(json_str: &str) -> T {
44 serde_json::from_str(json_str).unwrap_or_default()
45}
46
47#[must_use]
52pub fn deserialize_from_str_opt<T: serde::de::DeserializeOwned>(json_str: &str) -> Option<T> {
53 serde_json::from_str(json_str).ok()
54}
55
56#[must_use]
60pub fn deserialize_from_string_opt_or_default<T: serde::de::DeserializeOwned + Default>(
61 json_str: &Option<String>,
62) -> T {
63 json_str
64 .as_ref()
65 .and_then(|s| deserialize_from_str_opt::<T>(s))
66 .unwrap_or_default()
67}
68
69#[must_use]
73pub fn deserialize_from_string_opt<T: serde::de::DeserializeOwned>(json_str: &Option<String>) -> Option<T> {
74 json_str.as_ref().and_then(|s| deserialize_from_str_opt::<T>(s))
75}
76
77pub fn deserialize_from_value<T: serde::de::DeserializeOwned>(
83 value: serde_json::Value,
84) -> Result<T, serde_json::Error> {
85 serde_json::from_value(value)
86}
87
88#[must_use]
90pub fn deserialize_from_value_opt<T: serde::de::DeserializeOwned>(value: serde_json::Value) -> Option<T> {
91 serde_json::from_value(value).ok()
92}
93
94#[must_use]
96pub fn serialize_to_vec_or_default<T: serde::Serialize>(value: &T) -> Vec<u8> {
97 serde_json::to_vec(value).unwrap_or_default()
98}