// Back - An extremely simple git issue tracking system. Inspired by tvix's // panettone // // Copyright (C) 2024 Benedikt Peetz // SPDX-License-Identifier: AGPL-3.0-or-later // // This file is part of Back. // // You should have received a copy of the License along with this program. // If not, see . use std::fmt::Display; use entity::{Entity, Id}; use identity::Author; use label::Label; use operation::Operation; use serde_json::Value; use super::format::{MarkDown, TimeStamp}; pub mod entity; pub mod identity; pub mod label; pub mod operation; #[derive(Debug, Eq, PartialEq, Copy, Clone)] pub enum Status { Open, Closed, } impl From<&Value> for Status { fn from(value: &Value) -> Self { match value.as_u64().expect("This should be a integer") { 1 => Self::Open, 2 => Self::Closed, other => unimplemented!("Invalid status string: '{other}'"), } } } impl Display for Status { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Status::Open => f.write_str("Open"), Status::Closed => f.write_str("Closed"), } } } #[derive(Debug)] pub struct CollapsedIssue { pub id: Id, pub author: Author, pub timestamp: TimeStamp, pub title: MarkDown, pub message: MarkDown, pub comments: Vec, pub status: Status, pub last_status_change: TimeStamp, pub labels: Vec