romm_api/types/
achievements.rs1use serde::{Deserialize, Serialize};
2
3#[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}