hotdata 0.7.0

Powerful data platform API for datasets, queries, and analytics.
Documentation
/*
 * Hotdata API
 *
 * Powerful data platform API for managed databases, queries, and analytics.
 *
 * The version of the OpenAPI document: 1.0.0
 * Contact: developers@hotdata.dev
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// IndexEntryResponse : One index in a cross-table listing: the per-table [`IndexInfoResponse`] plus the identity needed to know which table it belongs to.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct IndexEntryResponse {
    #[serde(rename = "columns")]
    pub columns: Vec<String>,
    #[serde(rename = "created_at")]
    pub created_at: String,
    #[serde(rename = "index_name")]
    pub index_name: String,
    #[serde(rename = "index_type")]
    pub index_type: String,
    /// Distance metric this index was built with. Only present for vector indexes.
    #[serde(rename = "metric", skip_serializing_if = "Option::is_none")]
    pub metric: Option<String>,
    /// Source text column for an embedding-backed vector index. A query searches it via `vector_distance(<source_column>, …)`; the indexed `columns` hold the generated embedding column instead. Absent for BM25, sorted, and direct (existing-column) vector indexes.
    #[serde(rename = "source_column", skip_serializing_if = "Option::is_none")]
    pub source_column: Option<String>,
    #[serde(rename = "status")]
    pub status: models::IndexStatus,
    #[serde(rename = "updated_at")]
    pub updated_at: String,
    #[serde(
        rename = "connection_id",
        default,
        with = "::serde_with::rust::double_option",
        skip_serializing_if = "Option::is_none"
    )]
    pub connection_id: Option<Option<String>>,
    #[serde(rename = "schema_name")]
    pub schema_name: String,
    #[serde(rename = "table_name")]
    pub table_name: String,
}

impl IndexEntryResponse {
    /// One index in a cross-table listing: the per-table [`IndexInfoResponse`] plus the identity needed to know which table it belongs to.
    pub fn new(
        columns: Vec<String>,
        created_at: String,
        index_name: String,
        index_type: String,
        status: models::IndexStatus,
        updated_at: String,
        schema_name: String,
        table_name: String,
    ) -> IndexEntryResponse {
        IndexEntryResponse {
            columns,
            created_at,
            index_name,
            index_type,
            metric: None,
            source_column: None,
            status,
            updated_at,
            connection_id: None,
            schema_name,
            table_name,
        }
    }
}