Compareware/src/models/item.rs

49 lines
1.4 KiB
Rust
Raw Normal View History

/// Represents an Item in CompareWare.
/// Each item has metadata and key-value tags for categorization.
2024-12-06 14:45:14 +03:00
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
2024-12-06 14:45:14 +03:00
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Item {
pub id: String,
pub name: String,
pub description: String,
pub wikidata_id: Option<String>,
pub custom_properties: HashMap<String, String>,
2024-12-17 13:39:41 +03:00
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct WikidataSuggestion {
pub id: String,
#[serde(default)]
pub label: String,
#[serde(default)]
pub description: String,
#[serde(default)]
pub title: String,
#[serde(default, rename = "display")]
pub display: DisplayInfo,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct DisplayInfo {
#[serde(default, rename = "label")]
pub label: LabelInfo,
#[serde(default, rename = "description")]
pub description: DescriptionInfo,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct LabelInfo {
#[serde(default, rename = "value")]
pub value: String,
#[serde(default, rename = "language")]
pub language: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct DescriptionInfo {
#[serde(default, rename = "value")]
pub value: String,
#[serde(default, rename = "language")]
pub language: String,
}