aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/ba/back/src/git_bug/issue/operation
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-06 22:08:26 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-06 22:08:26 +0200
commit21b9a461dafeab63893d82a82d7b84ffe3a59c40 (patch)
treedfb8e657e2f36b426d9fba1b1a703431836d92e5 /pkgs/by-name/ba/back/src/git_bug/issue/operation
parentflake.nix: Use the packaged version of `ragenix` (diff)
downloadnixos-server-21b9a461dafeab63893d82a82d7b84ffe3a59c40.zip
pkgs/back: Remove
Back has been moved out-of-tree.
Diffstat (limited to 'pkgs/by-name/ba/back/src/git_bug/issue/operation')
-rw-r--r--pkgs/by-name/ba/back/src/git_bug/issue/operation/mod.rs124
-rw-r--r--pkgs/by-name/ba/back/src/git_bug/issue/operation/operation_type.rs51
2 files changed, 0 insertions, 175 deletions
diff --git a/pkgs/by-name/ba/back/src/git_bug/issue/operation/mod.rs b/pkgs/by-name/ba/back/src/git_bug/issue/operation/mod.rs
deleted file mode 100644
index 7f861a7..0000000
--- a/pkgs/by-name/ba/back/src/git_bug/issue/operation/mod.rs
+++ /dev/null
@@ -1,124 +0,0 @@
-// Back - An extremely simple git issue tracking system. Inspired by tvix's
-// panettone
-//
-// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-// 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 <https://www.gnu.org/licenses/agpl.txt>.
-
-use std::convert::Infallible;
-
-use operation_type::OperationType;
-use serde::Deserialize;
-use serde_json::Value;
-
-use crate::{
- get,
- git_bug::format::{MarkDown, TimeStamp},
-};
-
-use super::{entity, label::Label, Status};
-
-pub mod operation_type;
-
-#[derive(Deserialize, Debug)]
-#[serde(try_from = "Value")]
-pub enum Operation {
- AddComment {
- timestamp: TimeStamp,
- message: MarkDown,
- },
- Create {
- timestamp: TimeStamp,
- title: MarkDown,
- message: MarkDown,
- },
- EditComment {
- timestamp: TimeStamp,
- target: entity::Id,
- message: MarkDown,
- },
- LabelChange {
- timestamp: TimeStamp,
- added: Vec<Label>,
- removed: Vec<Label>,
- },
- SetStatus {
- timestamp: TimeStamp,
- status: Status,
- },
- SetTitle {
- timestamp: TimeStamp,
- title: MarkDown,
- was: MarkDown,
- },
-
- // These seem to be just weird non-operation, operations.
- // defined in: git-bug/entities/bug/operation.go
- NoOp {},
- SetMetadata {},
-}
-
-impl TryFrom<Value> for Operation {
- type Error = Infallible;
-
- fn try_from(value: Value) -> Result<Self, Self::Error> {
- let operation_type = OperationType::from_json_int(
- value
- .get("type")
- .expect("Should exist")
- .as_u64()
- .expect("This should work"),
- );
-
- let op = match operation_type {
- OperationType::AddComment => Self::AddComment {
- timestamp: get! {value, "timestamp" },
- message: get! {value, "message"},
- },
- OperationType::Create => Self::Create {
- timestamp: get! {value, "timestamp"},
- title: get! {value, "title"},
- message: get! {value, "message"},
- },
- OperationType::EditComment => Self::EditComment {
- timestamp: get! {value, "timestamp"},
- target: get! {value, "target"},
- message: get! {value, "message"},
- },
- OperationType::LabelChange => Self::LabelChange {
- timestamp: get! {value, "timestamp"},
- added: serde_json::from_value(
- value
- .get("added")
- .expect("This should be available")
- .to_owned(),
- )
- .expect("This should be parsable"),
- removed: serde_json::from_value(
- value
- .get("removed")
- .expect("This should be available")
- .to_owned(),
- )
- .expect("This should be parsable"),
- },
- OperationType::SetStatus => Self::SetStatus {
- timestamp: get! {value, "timestamp"},
- status: get! {value, "status"},
- },
- OperationType::SetTitle => Self::SetTitle {
- timestamp: get! {value, "timestamp"},
- title: get! {value, "title"},
- was: get! {value, "was"},
- },
- OperationType::NoOp => Self::NoOp {},
- OperationType::SetMetadata => Self::SetMetadata {},
- };
-
- Ok(op)
- }
-}
diff --git a/pkgs/by-name/ba/back/src/git_bug/issue/operation/operation_type.rs b/pkgs/by-name/ba/back/src/git_bug/issue/operation/operation_type.rs
deleted file mode 100644
index 69d272f..0000000
--- a/pkgs/by-name/ba/back/src/git_bug/issue/operation/operation_type.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-// Back - An extremely simple git issue tracking system. Inspired by tvix's
-// panettone
-//
-// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de>
-// 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 <https://www.gnu.org/licenses/agpl.txt>.
-
-pub enum OperationType {
- AddComment,
- Create,
- EditComment,
- LabelChange,
- NoOp,
- SetMetadata,
- SetStatus,
- SetTitle,
-}
-
-impl OperationType {
- // NOTE(@bpeetz): This mapping should always be the same as `git_bug`'s.
- // The mapping is defined in `git-bug/entities/bug/operation.go`. <2024-12-26>
- pub fn to_json_int(self) -> u64 {
- match self {
- OperationType::Create => 1,
- OperationType::SetTitle => 2,
- OperationType::AddComment => 3,
- OperationType::SetStatus => 4,
- OperationType::LabelChange => 5,
- OperationType::EditComment => 6,
- OperationType::NoOp => 7,
- OperationType::SetMetadata => 8,
- }
- }
- pub fn from_json_int(value: u64) -> Self {
- match value {
- 1 => OperationType::Create,
- 2 => OperationType::SetTitle,
- 3 => OperationType::AddComment,
- 4 => OperationType::SetStatus,
- 5 => OperationType::LabelChange,
- 6 => OperationType::EditComment,
- 7 => OperationType::NoOp,
- 8 => OperationType::SetMetadata,
- other => unimplemented!("The operation type {other} is not recognized."),
- }
- }
-}