refactor(api-server): narrow puzzle state surface

This commit is contained in:
kdletters
2026-05-21 18:55:25 +08:00
parent cc23b6020d
commit 5834a99107
31 changed files with 1087 additions and 169 deletions

View File

@@ -46,6 +46,21 @@ impl SpacetimeClient {
.await
}
pub async fn get_asset_object(
&self,
asset_object_id: String,
) -> Result<Option<AssetObjectRecord>, SpacetimeClientError> {
self.read_after_connect("get_asset_object", move |connection| {
Ok(connection
.db()
.asset_object()
.asset_object_id()
.find(&asset_object_id)
.map(map_asset_object_row))
})
.await
}
pub async fn bind_asset_object_to_entity(
&self,
input: module_assets::AssetEntityBindingInput,

View File

@@ -585,6 +585,7 @@ impl SpacetimeClient {
"SELECT * FROM public_work_play_daily_stat WHERE source_type = 'big-fish'",
"SELECT * FROM creation_entry_config",
"SELECT * FROM creation_entry_type_config",
"SELECT * FROM asset_object",
] {
if let Ok(subscription) = self
.subscribe_cached_read_model_query(connection, broken.clone(), query, false)

View File

@@ -120,7 +120,9 @@ pub use self::runtime_profile::{
pub use self::story::{VisualNovelRuntimeEventRecord, VisualNovelRuntimeEventRecordInput};
pub(crate) use self::ai::map_ai_task_procedure_result;
pub(crate) use self::assets::{map_entity_binding_procedure_result, map_procedure_result};
pub(crate) use self::assets::{
map_asset_object_row, map_entity_binding_procedure_result, map_procedure_result,
};
pub(crate) use self::auth::{
map_auth_store_snapshot_import_procedure_result, map_auth_store_snapshot_procedure_result,
};

View File

@@ -115,6 +115,26 @@ pub(crate) fn map_snapshot(
}
}
pub(crate) fn map_asset_object_row(row: AssetObject) -> AssetObjectRecord {
build_asset_object_record(module_assets::AssetObjectUpsertSnapshot {
asset_object_id: row.asset_object_id,
bucket: row.bucket,
object_key: row.object_key,
access_policy: map_access_policy_back(row.access_policy),
content_type: row.content_type,
content_length: row.content_length,
content_hash: row.content_hash,
version: row.version,
source_job_id: row.source_job_id,
owner_user_id: row.owner_user_id,
profile_id: row.profile_id,
entity_id: row.entity_id,
asset_kind: row.asset_kind,
created_at_micros: row.created_at.to_micros_since_unix_epoch(),
updated_at_micros: row.updated_at.to_micros_since_unix_epoch(),
})
}
pub(crate) fn map_access_policy(
value: AssetObjectAccessPolicy,
) -> crate::module_bindings::AssetObjectAccessPolicy {