limithub_code_block_sdk/
value.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
4#[serde(rename_all = "camelCase")]
5pub enum PortValueType {
6    Bool,
7    Int,
8    Float,
9    String,
10    Image,
11    History,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15#[serde(tag = "imageType", rename_all = "camelCase")]
16pub enum Image {
17    Url {
18        #[serde(rename = "imageURL")]
19        image_url: ImageUrl,
20    },
21    Base64 {
22        image_base64: ImageBase64,
23    },
24}
25
26impl Image {
27    pub fn new_url(url: impl AsRef<str>, expired: u32) -> Self {
28        Image::Url {
29            image_url: ImageUrl {
30                url: url.as_ref().to_owned(),
31                expired,
32            },
33        }
34    }
35
36    pub fn new_base64(base64: impl AsRef<str>) -> Self {
37        Image::Base64 {
38            image_base64: ImageBase64 {
39                base64: base64.as_ref().to_owned(),
40            },
41        }
42    }
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub struct ImageUrl {
48    pub url: String,
49    pub expired: u32,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct ImageBase64 {
55    pub base64: String,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(rename_all = "camelCase")]
60pub struct PromptEntry {
61    pub role: String,
62    pub body: String,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(rename_all = "camelCase")]
67pub struct History {
68    pub histories: Vec<PromptEntry>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(tag = "portValueType", rename_all = "camelCase")]
73pub enum PortValue {
74    Bool {
75        #[serde(rename = "booleanValue")]
76        boolean_value: bool,
77    },
78    Int {
79        #[serde(rename = "integerValue")]
80        integer_value: i64,
81    },
82    Float {
83        #[serde(rename = "floatValue")]
84        float_value: f32,
85    },
86    String {
87        #[serde(rename = "stringValue")]
88        string_value: String,
89    },
90    Image {
91        #[serde(rename = "imageValue")]
92        image_value: Image,
93    },
94    History {
95        #[serde(rename = "historyValue")]
96        history_value: History,
97    },
98}
99
100impl PortValue {
101    pub fn new_bool(boolean_value: bool) -> Self {
102        PortValue::Bool { boolean_value }
103    }
104
105    pub fn new_integer(integer_value: i64) -> Self {
106        PortValue::Int { integer_value }
107    }
108
109    pub fn new_float(float_value: f32) -> Self {
110        PortValue::Float { float_value }
111    }
112
113    pub fn new_string(string_value: impl AsRef<str>) -> Self {
114        PortValue::String {
115            string_value: string_value.as_ref().to_owned(),
116        }
117    }
118
119    pub fn new_image(image_value: Image) -> Self {
120        PortValue::Image { image_value }
121    }
122
123    pub fn port_value_type(&self) -> PortValueType {
124        match self {
125            PortValue::Bool { .. } => PortValueType::Bool,
126            PortValue::Int { .. } => PortValueType::Int,
127            PortValue::Float { .. } => PortValueType::Float,
128            PortValue::String { .. } => PortValueType::String,
129            PortValue::Image { .. } => PortValueType::Image,
130            PortValue::History { .. } => PortValueType::History,
131        }
132    }
133}