elefant-tools 0.0.8

A library for doing things like pg_dump and pg_restore, with extra features, and probably more bugs.
Documentation
use crate::postgres_client_wrapper::QueryResult;
use elefant_client::Interval;

pub struct TimescaleHypertableDimensionResult {
    pub table_schema: String,
    pub table_name: String,
    pub dimension_number: i64,
    pub column_name: String,
    pub time_interval: Option<Interval>,
    pub integer_interval: Option<i64>,
    pub num_partitions: Option<i16>,
}

impl<'a> elefant_client::FromSqlRow<'a> for TimescaleHypertableDimensionResult {
    fn from_sql_row(
        row: &'a elefant_client::PostgresDataRow<'_, '_>,
    ) -> Result<Self, elefant_client::ElefantClientError> {
        Ok(TimescaleHypertableDimensionResult {
            table_schema: row.get(0)?,
            table_name: row.get(1)?,
            dimension_number: row.get(2)?,
            column_name: row.get(3)?,
            time_interval: row.get(4)?,
            integer_interval: row.get(5)?,
            num_partitions: row.get(6)?,
        })
    }
}

//language=postgresql
pub(in crate::schema_reader) const QUERY: &str = r#"
select h.hypertable_schema,
       h.hypertable_name,
       h.dimension_number,
       h.column_name,
       h.time_interval,
       h.integer_interval,
       h.num_partitions
from timescaledb_information.dimensions h
order by h.hypertable_schema, h.hypertable_name, h.dimension_number;
"#;

impl QueryResult for TimescaleHypertableDimensionResult {
    fn query(_version: i32) -> &'static str {
        QUERY
    }
}