jacquard_api/games_gamesgamesgamesgames/
create_game.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11use crate::games_gamesgamesgamesgames::AgeRating;
12use crate::games_gamesgamesgamesgames::AlternativeName;
13use crate::games_gamesgamesgamesgames::ApplicationType;
14use crate::games_gamesgamesgamesgames::ExternalVideo;
15use crate::games_gamesgamesgamesgames::Genre;
16use crate::games_gamesgamesgamesgames::LanguageSupport;
17use crate::games_gamesgamesgamesgames::MediaItem;
18use crate::games_gamesgamesgamesgames::Mode;
19use crate::games_gamesgamesgamesgames::MultiplayerMode;
20use crate::games_gamesgamesgamesgames::PlayerPerspective;
21use crate::games_gamesgamesgamesgames::Release;
22use crate::games_gamesgamesgamesgames::Theme;
23use crate::games_gamesgamesgamesgames::TimeToBeat;
24use crate::games_gamesgamesgamesgames::Website;
25#[allow(unused_imports)]
26use core::marker::PhantomData;
27use jacquard_common::deps::smol_str::SmolStr;
28use jacquard_common::types::string::AtUri;
29use jacquard_common::types::value::Data;
30use jacquard_common::{BosStr, CowStr, DefaultStr, FromStaticStr};
31use jacquard_derive::IntoStatic;
32use serde::{Deserialize, Serialize};
33
34#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
35#[serde(
36 rename_all = "camelCase",
37 bound(deserialize = "S: Deserialize<'de> + BosStr")
38)]
39pub struct CreateGame<S: BosStr = DefaultStr> {
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub age_ratings: Option<Vec<AgeRating<S>>>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub alternative_names: Option<Vec<AlternativeName<S>>>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub application_type: Option<ApplicationType<S>>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub engines: Option<Vec<AtUri<S>>>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub genres: Option<Vec<Genre<S>>>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub keywords: Option<Vec<S>>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub language_supports: Option<Vec<LanguageSupport<S>>>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub media: Option<Vec<MediaItem<S>>>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub modes: Option<Vec<Mode<S>>>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub multiplayer_modes: Option<Vec<MultiplayerMode<S>>>,
60 pub name: S,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub parent: Option<AtUri<S>>,
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub player_perspectives: Option<Vec<PlayerPerspective<S>>>,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 pub releases: Option<Vec<Release<S>>>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub should_publish: Option<bool>,
69 #[serde(skip_serializing_if = "Option::is_none")]
71 pub slug: Option<S>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub storyline: Option<S>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub summary: Option<S>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub themes: Option<Vec<Theme<S>>>,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub time_to_beat: Option<TimeToBeat<S>>,
80 #[serde(skip_serializing_if = "Option::is_none")]
81 pub videos: Option<Vec<ExternalVideo<S>>>,
82 #[serde(skip_serializing_if = "Option::is_none")]
83 pub websites: Option<Vec<Website<S>>>,
84 #[serde(flatten, default, skip_serializing_if = "Option::is_none")]
85 pub extra_data: Option<BTreeMap<SmolStr, Data<S>>>,
86}
87
88#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
89#[serde(
90 rename_all = "camelCase",
91 bound(deserialize = "S: Deserialize<'de> + BosStr")
92)]
93pub struct CreateGameOutput<S: BosStr = DefaultStr> {
94 pub cid: S,
95 pub uri: AtUri<S>,
96 #[serde(flatten, default, skip_serializing_if = "Option::is_none")]
97 pub extra_data: Option<BTreeMap<SmolStr, Data<S>>>,
98}
99
100pub struct CreateGameResponse;
104impl jacquard_common::xrpc::XrpcResp for CreateGameResponse {
105 const NSID: &'static str = "games.gamesgamesgamesgames.createGame";
106 const ENCODING: &'static str = "application/json";
107 type Output<S: BosStr> = CreateGameOutput<S>;
108 type Err = jacquard_common::xrpc::GenericError;
109}
110
111impl<S: BosStr> jacquard_common::xrpc::XrpcRequest for CreateGame<S> {
112 const NSID: &'static str = "games.gamesgamesgamesgames.createGame";
113 const METHOD: jacquard_common::xrpc::XrpcMethod =
114 jacquard_common::xrpc::XrpcMethod::Procedure("application/json");
115 type Response = CreateGameResponse;
116}
117
118pub struct CreateGameRequest;
122impl jacquard_common::xrpc::XrpcEndpoint for CreateGameRequest {
123 const PATH: &'static str = "/xrpc/games.gamesgamesgamesgames.createGame";
124 const METHOD: jacquard_common::xrpc::XrpcMethod =
125 jacquard_common::xrpc::XrpcMethod::Procedure("application/json");
126 type Request<S: BosStr> = CreateGame<S>;
127 type Response = CreateGameResponse;
128}