1use baobao_core::ContextFieldType;
4
5#[derive(Debug, Clone)]
7pub struct CommandInfo {
8 pub name: String,
9 pub description: String,
10 pub has_subcommands: bool,
11}
12
13#[derive(Debug, Clone)]
15pub struct ContextFieldInfo {
16 pub name: String,
17 pub field_type: ContextFieldType,
19 pub env_var: String,
20 pub is_async: bool,
21 pub pool: PoolConfigInfo,
22 pub sqlite: Option<SqliteConfigInfo>,
23}
24
25#[derive(Debug, Clone, Default)]
27pub struct PoolConfigInfo {
28 pub max_connections: Option<u32>,
29 pub min_connections: Option<u32>,
30 pub acquire_timeout: Option<u64>,
31 pub idle_timeout: Option<u64>,
32 pub max_lifetime: Option<u64>,
33}
34
35impl PoolConfigInfo {
36 pub fn has_config(&self) -> bool {
37 self.max_connections.is_some()
38 || self.min_connections.is_some()
39 || self.acquire_timeout.is_some()
40 || self.idle_timeout.is_some()
41 || self.max_lifetime.is_some()
42 }
43}
44
45#[derive(Debug, Clone, Default)]
47pub struct SqliteConfigInfo {
48 pub path: Option<String>,
50 pub create_if_missing: Option<bool>,
51 pub read_only: Option<bool>,
52 pub journal_mode: Option<String>,
53 pub synchronous: Option<String>,
54 pub busy_timeout: Option<u64>,
55 pub foreign_keys: Option<bool>,
56}
57
58impl SqliteConfigInfo {
59 pub fn has_config(&self) -> bool {
60 self.create_if_missing.is_some()
61 || self.read_only.is_some()
62 || self.journal_mode.is_some()
63 || self.synchronous.is_some()
64 || self.busy_timeout.is_some()
65 || self.foreign_keys.is_some()
66 }
67}