mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-03 18:50:30 +08:00
77 lines
1.8 KiB
Rust
77 lines
1.8 KiB
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
use radicle::cob::{issue, patch};
|
|
|
|
#[derive(Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct PaginationQuery {
|
|
#[serde(default)]
|
|
pub show: RepoQuery,
|
|
pub page: Option<usize>,
|
|
pub per_page: Option<usize>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Default)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub enum RepoQuery {
|
|
All,
|
|
#[default]
|
|
Pinned,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct RawQuery {
|
|
pub mime: Option<String>,
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub struct CobsQuery<T> {
|
|
pub page: Option<usize>,
|
|
pub per_page: Option<usize>,
|
|
pub status: Option<T>,
|
|
}
|
|
|
|
#[derive(Default, Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub enum IssueStatus {
|
|
Closed,
|
|
#[default]
|
|
Open,
|
|
All,
|
|
}
|
|
|
|
impl IssueStatus {
|
|
pub fn matches(&self, issue: &issue::State) -> bool {
|
|
match self {
|
|
Self::Open => matches!(issue, issue::State::Open),
|
|
Self::Closed => matches!(issue, issue::State::Closed { .. }),
|
|
Self::All => true,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Default, Serialize, Deserialize, Clone)]
|
|
#[serde(rename_all = "camelCase")]
|
|
pub enum PatchStatus {
|
|
#[default]
|
|
Open,
|
|
Draft,
|
|
Archived,
|
|
Merged,
|
|
All,
|
|
}
|
|
|
|
impl PatchStatus {
|
|
pub fn matches(&self, patch: &patch::State) -> bool {
|
|
match self {
|
|
Self::Open => matches!(patch, patch::State::Open { .. }),
|
|
Self::Draft => matches!(patch, patch::State::Draft),
|
|
Self::Archived => matches!(patch, patch::State::Archived),
|
|
Self::Merged => matches!(patch, patch::State::Merged { .. }),
|
|
Self::All => true,
|
|
}
|
|
}
|
|
}
|