Skip to main content

soma_codemode/snippet/
store.rs

1use 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}