branch: main
issues_web.rs
1139 bytesRaw
//! Server-rendered HTML pages for issues and pull requests.

use worker::*;

type Url = worker::Url;

mod detail;
mod forms;
mod list;

pub(crate) use detail::{page_issue_detail, page_issue_detail_markdown};
pub(crate) use forms::{
    page_new_issue, page_new_issue_markdown, page_new_pull, page_new_pull_markdown,
};
pub(crate) use list::{
    page_issues_list, page_issues_list_markdown, page_pulls_list, page_pulls_list_markdown,
};

// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------

fn load_branches(sql: &SqlStorage) -> Result<Vec<String>> {
    #[derive(serde::Deserialize)]
    struct Row {
        name: String,
    }
    let rows: Vec<Row> = sql
        .exec(
            "SELECT name FROM refs WHERE name LIKE 'refs/heads/%' ORDER BY name",
            None,
        )?
        .to_array()?;
    Ok(rows
        .into_iter()
        .map(|r| {
            r.name
                .strip_prefix("refs/heads/")
                .unwrap_or(&r.name)
                .to_string()
        })
        .collect())
}