athena_rs 3.22.1

Hyper performant polyglot Database driver
Documentation
//! Health-reason specification catalog for `/debug/schema`.
//!
//! This module owns the deterministic reason-spec order used by health-reason
//! assembly.

/// Metric selectors used by health-reason specs.
#[derive(Debug, Clone, Copy)]
pub(super) enum LoggingSchemaDebugHealthReasonMetric {
    /// Required missing table count.
    RequiredMissingTables,
    /// Required missing column count.
    RequiredMissingColumns,
    /// Relation type mismatch count.
    RelationTypeMismatches,
    /// Optional missing table count.
    OptionalMissingTables,
    /// Optional missing column count.
    OptionalMissingColumns,
}

/// One health-reason spec row mapped to one metrics selector.
#[derive(Debug, Clone, Copy)]
pub(super) struct LoggingSchemaDebugHealthReasonSpec {
    /// Machine-readable reason code.
    pub(super) code: &'static str,
    /// Severity label for this reason (`error` / `warning`).
    pub(super) severity: &'static str,
    /// Human-readable reason message.
    pub(super) message: &'static str,
    /// Metrics selector that provides the reason count.
    pub(super) metric: LoggingSchemaDebugHealthReasonMetric,
}

/// Deterministic reason-spec order for nonzero metrics.
pub(super) const LOGGING_SCHEMA_DEBUG_HEALTH_REASON_SPECS: [LoggingSchemaDebugHealthReasonSpec; 5] = [
    LoggingSchemaDebugHealthReasonSpec {
        code: "missing_required_tables",
        severity: "error",
        message: "Required logging tables are missing",
        metric: LoggingSchemaDebugHealthReasonMetric::RequiredMissingTables,
    },
    LoggingSchemaDebugHealthReasonSpec {
        code: "missing_required_columns",
        severity: "error",
        message: "Required logging columns are missing",
        metric: LoggingSchemaDebugHealthReasonMetric::RequiredMissingColumns,
    },
    LoggingSchemaDebugHealthReasonSpec {
        code: "relation_type_mismatches",
        severity: "error",
        message: "Found relation types do not match expected relation types",
        metric: LoggingSchemaDebugHealthReasonMetric::RelationTypeMismatches,
    },
    LoggingSchemaDebugHealthReasonSpec {
        code: "missing_optional_tables",
        severity: "warning",
        message: "Optional logging tables are missing",
        metric: LoggingSchemaDebugHealthReasonMetric::OptionalMissingTables,
    },
    LoggingSchemaDebugHealthReasonSpec {
        code: "missing_optional_columns",
        severity: "warning",
        message: "Optional logging columns are missing",
        metric: LoggingSchemaDebugHealthReasonMetric::OptionalMissingColumns,
    },
];