soma_codemode/snippet/
store.rs1use std::collections::BTreeMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(rename_all = "snake_case")]
7pub enum SnippetInputType {
8 String,
9 Number,
10 Boolean,
11 Json,
12}
13
14#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
15pub struct SnippetInputSpec {
16 pub input_type: SnippetInputType,
17 #[serde(default)]
18 pub required: bool,
19 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub description: Option<String>,
21}
22
23#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
24pub enum SnippetSource {
25 Inline,
26 File,
27}
28
29#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
30pub struct SnippetInfo {
31 pub name: String,
32 #[serde(default, skip_serializing_if = "Option::is_none")]
33 pub description: Option<String>,
34 #[serde(default)]
35 pub inputs: BTreeMap<String, SnippetInputSpec>,
36 pub source: SnippetSource,
37}