pipedash-plugin-api 0.1.1

Plugin API for Pipedash - CI/CD pipeline dashboard
Documentation
use crate::schema::*;

pub fn default_table_schema() -> TableSchema {
    TableSchema::new()
        .add_table(default_pipeline_runs_table())
        .add_table(default_pipelines_table())
}

pub fn default_pipeline_runs_table() -> TableDefinition {
    TableDefinition {
        id: "pipeline_runs".to_string(),
        name: "Pipeline Runs".to_string(),
        description: Some("Build/run history for pipelines".to_string()),
        columns: vec![
            ColumnDefinition {
                id: "run_number".to_string(),
                label: "Run".to_string(),
                description: Some("Run/build number".to_string()),
                field_path: "run_number".to_string(),
                data_type: ColumnDataType::Number,
                renderer: CellRenderer::Text,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(100),
                sortable: true,
                filterable: false,
                align: Some("center".to_string()),
            },
            ColumnDefinition {
                id: "status".to_string(),
                label: "Status".to_string(),
                description: None,
                field_path: "status".to_string(),
                data_type: ColumnDataType::Status,
                renderer: CellRenderer::StatusBadge,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(120),
                sortable: true,
                filterable: true,
                align: None,
            },
            ColumnDefinition {
                id: "branch".to_string(),
                label: "Branch".to_string(),
                description: None,
                field_path: "branch".to_string(),
                data_type: ColumnDataType::String,
                renderer: CellRenderer::TruncatedText,
                visibility: ColumnVisibility::WhenPresent,
                default_visible: true,
                width: Some(150),
                sortable: true,
                filterable: true,
                align: None,
            },
            ColumnDefinition {
                id: "started_at".to_string(),
                label: "Started".to_string(),
                description: None,
                field_path: "started_at".to_string(),
                data_type: ColumnDataType::DateTime,
                renderer: CellRenderer::DateTime,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(180),
                sortable: true,
                filterable: false,
                align: None,
            },
            ColumnDefinition {
                id: "duration_seconds".to_string(),
                label: "Duration".to_string(),
                description: None,
                field_path: "duration_seconds".to_string(),
                data_type: ColumnDataType::Duration,
                renderer: CellRenderer::Duration,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(120),
                sortable: true,
                filterable: false,
                align: None,
            },
            ColumnDefinition {
                id: "commit_sha".to_string(),
                label: "Commit".to_string(),
                description: None,
                field_path: "commit_sha".to_string(),
                data_type: ColumnDataType::String,
                renderer: CellRenderer::Commit,
                visibility: ColumnVisibility::WhenPresent,
                default_visible: false,
                width: Some(140),
                sortable: false,
                filterable: false,
                align: None,
            },
            ColumnDefinition {
                id: "actor".to_string(),
                label: "Actor".to_string(),
                description: Some("Who triggered the run".to_string()),
                field_path: "actor".to_string(),
                data_type: ColumnDataType::String,
                renderer: CellRenderer::Text,
                visibility: ColumnVisibility::WhenPresent,
                default_visible: false,
                width: Some(120),
                sortable: true,
                filterable: true,
                align: None,
            },
        ],
        default_sort_column: Some("run_number".to_string()),
        default_sort_direction: Some("desc".to_string()),
    }
}

pub fn default_pipelines_table() -> TableDefinition {
    TableDefinition {
        id: "pipelines".to_string(),
        name: "Pipelines".to_string(),
        description: Some("All pipelines/workflows".to_string()),
        columns: vec![
            ColumnDefinition {
                id: "name".to_string(),
                label: "Name".to_string(),
                description: None,
                field_path: "name".to_string(),
                data_type: ColumnDataType::String,
                renderer: CellRenderer::Text,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(200),
                sortable: true,
                filterable: true,
                align: None,
            },
            ColumnDefinition {
                id: "status".to_string(),
                label: "Status".to_string(),
                description: None,
                field_path: "status".to_string(),
                data_type: ColumnDataType::Status,
                renderer: CellRenderer::StatusBadge,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(120),
                sortable: true,
                filterable: true,
                align: None,
            },
            ColumnDefinition {
                id: "repository".to_string(),
                label: "Repository".to_string(),
                description: None,
                field_path: "repository".to_string(),
                data_type: ColumnDataType::String,
                renderer: CellRenderer::TruncatedText,
                visibility: ColumnVisibility::Always,
                default_visible: true,
                width: Some(180),
                sortable: true,
                filterable: true,
                align: None,
            },
            ColumnDefinition {
                id: "branch".to_string(),
                label: "Branch".to_string(),
                description: None,
                field_path: "branch".to_string(),
                data_type: ColumnDataType::String,
                renderer: CellRenderer::Badge,
                visibility: ColumnVisibility::WhenPresent,
                default_visible: true,
                width: Some(120),
                sortable: true,
                filterable: true,
                align: None,
            },
        ],
        default_sort_column: Some("name".to_string()),
        default_sort_direction: Some("asc".to_string()),
    }
}