84 lines
2.0 KiB
Rust
84 lines
2.0 KiB
Rust
use crate::store::BaseData;
|
|
use rhai::{CustomType, TypeBuilder};
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// Node reputation information
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
|
|
pub struct NodeReputation {
|
|
pub node_id: u32,
|
|
/// between 0 and 100, earned over time
|
|
pub reputation: i32,
|
|
/// between 0 and 100, set by system, farmer has no ability to set this
|
|
pub uptime: i32,
|
|
}
|
|
|
|
/// NodeGroup reputation model
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, crate::DeriveObject)]
|
|
pub struct NodeGroupReputation {
|
|
pub base_data: BaseData,
|
|
#[index]
|
|
pub nodegroup_id: u32,
|
|
/// between 0 and 100, earned over time
|
|
pub reputation: i32,
|
|
/// between 0 and 100, set by system, farmer has no ability to set this
|
|
pub uptime: i32,
|
|
pub nodes: Vec<NodeReputation>,
|
|
}
|
|
|
|
impl NodeGroupReputation {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
base_data: BaseData::new(),
|
|
nodegroup_id: 0,
|
|
reputation: 50, // default as per spec
|
|
uptime: 0,
|
|
nodes: Vec::new(),
|
|
}
|
|
}
|
|
|
|
pub fn nodegroup_id(mut self, v: u32) -> Self {
|
|
self.nodegroup_id = v;
|
|
self
|
|
}
|
|
|
|
pub fn reputation(mut self, v: i32) -> Self {
|
|
self.reputation = v;
|
|
self
|
|
}
|
|
|
|
pub fn uptime(mut self, v: i32) -> Self {
|
|
self.uptime = v;
|
|
self
|
|
}
|
|
|
|
pub fn add_node_reputation(mut self, node_rep: NodeReputation) -> Self {
|
|
self.nodes.push(node_rep);
|
|
self
|
|
}
|
|
}
|
|
|
|
impl NodeReputation {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
node_id: 0,
|
|
reputation: 50, // default as per spec
|
|
uptime: 0,
|
|
}
|
|
}
|
|
|
|
pub fn node_id(mut self, v: u32) -> Self {
|
|
self.node_id = v;
|
|
self
|
|
}
|
|
|
|
pub fn reputation(mut self, v: i32) -> Self {
|
|
self.reputation = v;
|
|
self
|
|
}
|
|
|
|
pub fn uptime(mut self, v: i32) -> Self {
|
|
self.uptime = v;
|
|
self
|
|
}
|
|
}
|