Skip to main content

context69_contracts/
sources.rs

1use chrono::{DateTime, Utc};
2use rmcp::schemars::JsonSchema;
3use serde::{Deserialize, Serialize};
4use utoipa::ToSchema;
5
6use crate::Visibility;
7
8#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, JsonSchema)]
9#[serde(rename_all = "snake_case")]
10pub enum SourceOriginStatusKind {
11    Unknown,
12    Connected,
13    Unreachable,
14    Misconfigured,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize, ToSchema, JsonSchema)]
18pub struct SourceStatus {
19    pub group_key: String,
20    pub project_key: String,
21    pub visibility: Visibility,
22    pub source_key: String,
23    pub display_name: String,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub description: Option<String>,
26    #[serde(default)]
27    pub example_queries: Vec<String>,
28    pub connection: String,
29    pub has_database_url: bool,
30    pub origin_status: SourceOriginStatusKind,
31    #[serde(default, skip_serializing_if = "Option::is_none")]
32    pub origin_message: Option<String>,
33    pub sync_strategy: String,
34    pub connector_type: String,
35    pub base_query: String,
36    pub batch_size: i64,
37    pub last_cursor_updated_at: Option<DateTime<Utc>>,
38    pub last_cursor_external_id: Option<String>,
39    pub last_success_at: Option<DateTime<Utc>>,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
43pub struct ListSourcesResponse {
44    pub sources: Vec<SourceStatus>,
45}