mindat_rs/models/
relations.rs1use serde::{Deserialize, Serialize};
4
5use super::serde_helpers::{deserialize_i64, deserialize_optional_i64};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct MineralRelation {
13 #[serde(deserialize_with = "deserialize_i64")]
15 pub rid: i64,
16 #[serde(default, deserialize_with = "deserialize_optional_i64")]
18 pub min1: Option<i64>,
19 #[serde(default, deserialize_with = "deserialize_optional_i64")]
21 pub min2: Option<i64>,
22 #[serde(default)]
24 pub rel: Option<serde_json::Value>,
25}
26
27#[derive(Debug, Clone, Default)]
29pub struct RelationsQuery {
30 pub q: Option<String>,
32 pub min1: Option<i64>,
34 pub min2: Option<i64>,
36 pub rel: Option<i32>,
38 pub page: Option<i32>,
40 pub page_size: Option<i32>,
42}
43
44impl RelationsQuery {
45 pub fn new() -> Self {
47 Self::default()
48 }
49
50 pub fn mineral(mut self, mineral_id: i64) -> Self {
52 self.min1 = Some(mineral_id);
53 self
54 }
55
56 pub fn page(mut self, page: i32) -> Self {
58 self.page = Some(page);
59 self
60 }
61
62 pub fn page_size(mut self, size: i32) -> Self {
64 self.page_size = Some(size);
65 self
66 }
67}