lgtm-cli 0.3.2

Run LGTM code reviews with a bundled web UI and gRPC server.
//! Selected object identity used to reject stale changes.
use super::ObjectKind;
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct ExpectedObject {
    pub kind: ObjectKind,
    pub id: uuid::Uuid,
    pub hash: String,
}

impl ExpectedObject {
    // Public ------------------------------------------------------------------

    /// Opaque to consumers. Saved source identity is separate from this review-data token.
    pub(crate) fn get_version<T: serde::Serialize>(
        kind: crate::backend::models::ObjectKind,
        version: i64,
        id: uuid::Uuid,
        value: &T,
    ) -> crate::backend::error::Result<String> {
        Ok(format!(
            "{}:{version}:{id}:{}",
            kind.as_str(),
            crate::backend::utils::object_hash(value)?
        ))
    }
}