#[derive(Debug, Clone, PartialEq, Eq)]
pub struct QueryEnvelope<T> {
    pub name: String,
    pub payload: T,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Pagination {
    pub limit: u32,
    pub cursor: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetPage {
    pub page_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetPageMeta {
    pub page_id: String,
    pub workspace_id: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetPageContent {
    pub page_id: String,
    pub workspace_id: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetBlock {
    pub block_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetMindmap {
    pub document_id: String,
    pub mindmap_id: String,
    pub workspace_id: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ListSidebarDataset {
    pub workspace_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ListPageBlocks {
    pub page_id: String,
    pub pagination: Pagination,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SearchPages {
    pub query: String,
    pub workspace_id: Option<String>,
    pub pagination: Pagination,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SearchDocuments {
    pub query: String,
    pub workspace_id: String,
    pub page_id: Option<String>,
    pub pagination: Pagination,
    pub title_only: bool,
    pub exact: bool,
    pub include_ocr: bool,
    pub time_range: String,
    pub time_field: String,
    pub custom_range_from: Option<String>,
    pub custom_range_to: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SearchRecent {
    pub workspace_id: String,
    pub pagination: Pagination,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SearchBlocks {
    pub query: String,
    pub page_id: Option<String>,
    pub pagination: Pagination,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetBridgeRequest {
    pub workspace_id: String,
    pub request_id: String,
    pub command_id: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetBridgeTrace {
    pub workspace_id: String,
    pub trace_id: String,
    pub command_id: Option<String>,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GetBridgeCommand {
    pub workspace_id: String,
    pub command_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ListBridgeWorkspaceOverview {
    pub workspace_id: String,
    pub pagination: Pagination,
    pub command_status: Option<String>,
    pub event_status: Option<String>,
    pub target_page_id: Option<String>,
    pub target_block_id: Option<String>,
    pub aggregate_type: Option<String>,
    pub aggregate_id: Option<String>,
}
