use simd_json::{derived::ValueTryAsScalar, owned};
use crate::{
entities::issue::{data::status::Status, issue_operation::IssueOperationData},
replica::entity::operation::operation_data::get,
};
struct SetStatus {
status: u64,
}
pub(crate) fn set_status(
mut value: owned::Object,
) -> Result<IssueOperationData, super::decode::Error> {
let base: SetStatus = SetStatus {
status: get! {value, "status", try_as_u64, super::decode::Error},
};
Ok(IssueOperationData::SetStatus {
status: Status::try_from(base.status)?,
})
}
pub(crate) fn set_status_value(status: &Status) -> simd_json::borrowed::Object<'_> {
let mut object = simd_json::borrowed::Object::new();
unsafe {
object.insert_nocheck("status".into(), Into::<u64>::into(*status).into());
}
object
}