追加版本不再把 projectKey 落进版本行
api-server 只在 `POST /games`(创建)路径把 `projectKey` 传给发布事务,路径端点一律传 `None`,避免版本行的 key 与作品行、自然键三方各说各话
This commit is contained in:
@@ -131,6 +131,9 @@ async fn publish_version_core(
|
||||
let payload: NewGameVersionRequest =
|
||||
serde_json::from_value(metadata).map_err(|_| bad_request("metadata 字段不合法"))?;
|
||||
let project_key = normalize_project_key(payload.project_key.as_deref())?;
|
||||
// `projectKey` 只是**创建作品**的身份锚:`POST /games` 无路径槽时用它派生 `gameId` 并落作品行;
|
||||
// 追加版本走路径 `{game_id}`,既不回退到(owner, projectKey)找作品,也不把 key 写进版本行。
|
||||
let is_create_path = matches!(&target, PublishTarget::NewGame);
|
||||
let requested_version_number = match &target {
|
||||
PublishTarget::NewGame => 1,
|
||||
PublishTarget::ExistingVersion { version_number, .. } => *version_number,
|
||||
@@ -225,7 +228,13 @@ async fn publish_version_core(
|
||||
let input = GameDistributionPublishVersionRecordInput {
|
||||
game_id: game_id.clone(),
|
||||
owner_user_id,
|
||||
project_key: project_key.clone(),
|
||||
// 只有创建作品那一次把 `projectKey` 落进作品行(模块 get-or-create 用);追加版本一律 None,
|
||||
// 避免版本行的 `project_key` 与作品行、自然键三方各说各话。
|
||||
project_key: if is_create_path {
|
||||
project_key.clone()
|
||||
} else {
|
||||
None
|
||||
},
|
||||
version_id,
|
||||
version_number,
|
||||
metadata_json,
|
||||
|
||||
Reference in New Issue
Block a user