后端:spacetime-client 新增游玩计数 facade
- game_distribution.rs:新增 GameDistributionPlayCountIncrementRecordInput 与 increment_game_distribution_game_play_counts,把批次映射为绑定输入并调用增量 procedure,错误转 procedure_failed
This commit is contained in:
@@ -27,10 +27,11 @@ pub use game_distribution::{
|
||||
GameDistributionConfirmPackageRecordInput, GameDistributionCreateGameRecordInput,
|
||||
GameDistributionCreateVersionRecordInput, GameDistributionFailUploadRecordInput,
|
||||
GameDistributionGetGameRecordInput, GameDistributionOwnerGameListRecordInput,
|
||||
GameDistributionPublicGameListRecordInput, GameDistributionRejectRecordInput,
|
||||
GameDistributionRestoreRecordInput, GameDistributionReviewGameListRecordInput,
|
||||
GameDistributionReviewModerationRecordInput, GameDistributionSubmitReviewRecordInput,
|
||||
GameDistributionSuspendRecordInput, GameDistributionUnpublishRecordInput,
|
||||
GameDistributionPlayCountIncrementRecordInput, GameDistributionPublicGameListRecordInput,
|
||||
GameDistributionRejectRecordInput, GameDistributionRestoreRecordInput,
|
||||
GameDistributionReviewGameListRecordInput, GameDistributionReviewModerationRecordInput,
|
||||
GameDistributionSubmitReviewRecordInput, GameDistributionSuspendRecordInput,
|
||||
GameDistributionUnpublishRecordInput,
|
||||
};
|
||||
#[path = "active/external_generation.rs"]
|
||||
pub mod external_generation;
|
||||
|
||||
@@ -51,6 +51,13 @@ pub struct GameDistributionGetGameRecordInput {
|
||||
pub owner_user_id: Option<String>,
|
||||
}
|
||||
|
||||
/// 单次游玩计数增量;同一批次内每个 `game_id` 只出现一次。
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct GameDistributionPlayCountIncrementRecordInput {
|
||||
pub game_id: String,
|
||||
pub delta: u64,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct GameDistributionCreateGameRecordInput {
|
||||
pub game_id: String,
|
||||
@@ -560,6 +567,49 @@ impl SpacetimeClient {
|
||||
.await
|
||||
}
|
||||
|
||||
/// 批量累加已公开游戏的游玩次数;非公开游戏由事务静默跳过。
|
||||
pub async fn increment_game_distribution_game_play_counts(
|
||||
&self,
|
||||
increments: Vec<GameDistributionPlayCountIncrementRecordInput>,
|
||||
) -> Result<(), SpacetimeClientError> {
|
||||
let input = crate::module_bindings::GameDistributionPlayCountIncrementInput {
|
||||
increments: increments
|
||||
.into_iter()
|
||||
.map(
|
||||
|increment| crate::module_bindings::GameDistributionPlayCountIncrement {
|
||||
game_id: increment.game_id,
|
||||
delta: increment.delta,
|
||||
},
|
||||
)
|
||||
.collect(),
|
||||
};
|
||||
self.call_after_connect(
|
||||
"increment_game_distribution_game_play_counts",
|
||||
move |connection, sender| {
|
||||
connection
|
||||
.procedures()
|
||||
.increment_game_distribution_game_play_counts_and_return_then(
|
||||
input,
|
||||
move |_, result| {
|
||||
let mapped = result
|
||||
.map_err(SpacetimeClientError::from_sdk_error)
|
||||
.and_then(|result| {
|
||||
if result.ok {
|
||||
Ok(())
|
||||
} else {
|
||||
Err(SpacetimeClientError::procedure_failed(
|
||||
result.error_message,
|
||||
))
|
||||
}
|
||||
});
|
||||
send_once(&sender, mapped);
|
||||
},
|
||||
);
|
||||
},
|
||||
)
|
||||
.await
|
||||
}
|
||||
|
||||
pub async fn create_game_distribution_game(
|
||||
&self,
|
||||
input: GameDistributionCreateGameRecordInput,
|
||||
|
||||
Reference in New Issue
Block a user