Skip to main content

jacquard_api/games_gamesgamesgamesgames/
create_game.rs

1// @generated by jacquard-lexicon. DO NOT EDIT.
2//
3// Lexicon: games.gamesgamesgamesgames.createGame
4//
5// This file was automatically generated from Lexicon schemas.
6// Any manual changes will be overwritten on the next regeneration.
7
8#[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    ///URL-friendly identifier for the game.
70    #[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
100/** Response marker for the `games.gamesgamesgamesgames.createGame` procedure.
101
102Implements `jacquard_common::xrpc::XrpcResp`; successful bodies decode as `Self::Output<S>`, which is `CreateGameOutput<S>` for this endpoint.*/
103pub 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
118/** Endpoint marker for the `games.gamesgamesgamesgames.createGame` procedure.
119
120Path: `/xrpc/games.gamesgamesgamesgames.createGame`. The request payload type is `CreateGame<S>`; send that request with `jacquard::Client` or use this marker through lower-level `XrpcEndpoint` APIs.*/
121pub 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}