use serde::{Deserialize, Serialize};
use super::serde_helpers::{deserialize_i64, deserialize_optional_i64};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MineralRelation {
#[serde(deserialize_with = "deserialize_i64")]
pub rid: i64,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub min1: Option<i64>,
#[serde(default, deserialize_with = "deserialize_optional_i64")]
pub min2: Option<i64>,
#[serde(default)]
pub rel: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default)]
pub struct RelationsQuery {
pub q: Option<String>,
pub min1: Option<i64>,
pub min2: Option<i64>,
pub rel: Option<i32>,
pub page: Option<i32>,
pub page_size: Option<i32>,
}
impl RelationsQuery {
pub fn new() -> Self {
Self::default()
}
pub fn mineral(mut self, mineral_id: i64) -> Self {
self.min1 = Some(mineral_id);
self
}
pub fn page(mut self, page: i32) -> Self {
self.page = Some(page);
self
}
pub fn page_size(mut self, size: i32) -> Self {
self.page_size = Some(size);
self
}
}