Skip to main content

romm_api/types/
achievements.rs

1use serde::{Deserialize, Serialize};
2
3/// RetroAchievements catalog attached to a ROM (`merged_ra_metadata` from RomM).
4#[derive(Debug, Clone, Deserialize, Serialize, Default, PartialEq)]
5pub struct MergedRaMetadata {
6    #[serde(default)]
7    pub achievements: Vec<RaAchievement>,
8}
9
10#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
11pub struct RaAchievement {
12    #[serde(default)]
13    pub title: String,
14    #[serde(default)]
15    pub points: Option<i64>,
16    #[serde(default)]
17    pub badge_id: Option<String>,
18    #[serde(default, alias = "badge_name")]
19    pub badge_name: Option<String>,
20    #[serde(default)]
21    pub description: Option<String>,
22    #[serde(default)]
23    pub display_order: Option<i64>,
24}
25
26#[derive(Debug, Clone, Deserialize, Serialize, Default, PartialEq)]
27pub struct RaUserProgression {
28    #[serde(default)]
29    pub results: Vec<RaUserGameProgression>,
30}
31
32#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
33pub struct RaUserGameProgression {
34    #[serde(default)]
35    pub rom_ra_id: Option<i64>,
36    #[serde(default)]
37    pub num_awarded: Option<i64>,
38    #[serde(default)]
39    pub max_possible: Option<i64>,
40    #[serde(default)]
41    pub earned_achievements: Vec<EarnedAchievement>,
42}
43
44#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
45pub struct EarnedAchievement {
46    pub id: String,
47    #[serde(default)]
48    pub date: Option<String>,
49    #[serde(default)]
50    pub date_hardcore: Option<String>,
51}
52
53#[derive(Debug, Clone, PartialEq, Eq)]
54pub struct AchievementRow {
55    pub title: String,
56    pub description: Option<String>,
57    pub points: Option<i64>,
58    pub earned: bool,
59    pub earned_at: Option<String>,
60}