feat: add admin work visibility controls
This commit is contained in:
@@ -18,6 +18,61 @@ impl From<module_runtime::CreationEntryTypeAdminUpsertInput> for CreationEntryTy
|
||||
}
|
||||
}
|
||||
|
||||
impl From<module_runtime::AdminWorkVisibilityListInput> for AdminWorkVisibilityListInput {
|
||||
fn from(input: module_runtime::AdminWorkVisibilityListInput) -> Self {
|
||||
Self {
|
||||
admin_user_id: input.admin_user_id,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<module_runtime::AdminWorkVisibilityUpdateInput> for AdminWorkVisibilityUpdateInput {
|
||||
fn from(input: module_runtime::AdminWorkVisibilityUpdateInput) -> Self {
|
||||
Self {
|
||||
admin_user_id: input.admin_user_id,
|
||||
source_type: input.source_type,
|
||||
profile_id: input.profile_id,
|
||||
visible: input.visible,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn build_admin_work_visibility_list_input(
|
||||
admin_user_id: String,
|
||||
) -> Result<module_runtime::AdminWorkVisibilityListInput, String> {
|
||||
let admin_user_id = admin_user_id.trim().to_string();
|
||||
if admin_user_id.is_empty() {
|
||||
return Err("adminUserId 不能为空".to_string());
|
||||
}
|
||||
Ok(module_runtime::AdminWorkVisibilityListInput { admin_user_id })
|
||||
}
|
||||
|
||||
pub(crate) fn build_admin_work_visibility_update_input(
|
||||
admin_user_id: String,
|
||||
source_type: String,
|
||||
profile_id: String,
|
||||
visible: bool,
|
||||
) -> Result<module_runtime::AdminWorkVisibilityUpdateInput, String> {
|
||||
let admin_user_id = admin_user_id.trim().to_string();
|
||||
if admin_user_id.is_empty() {
|
||||
return Err("adminUserId 不能为空".to_string());
|
||||
}
|
||||
let source_type = source_type.trim().to_string();
|
||||
if source_type.is_empty() {
|
||||
return Err("sourceType 不能为空".to_string());
|
||||
}
|
||||
let profile_id = profile_id.trim().to_string();
|
||||
if profile_id.is_empty() {
|
||||
return Err("profileId 不能为空".to_string());
|
||||
}
|
||||
Ok(module_runtime::AdminWorkVisibilityUpdateInput {
|
||||
admin_user_id,
|
||||
source_type,
|
||||
profile_id,
|
||||
visible,
|
||||
})
|
||||
}
|
||||
|
||||
impl From<module_runtime::RuntimeSettingGetInput> for RuntimeSettingGetInput {
|
||||
fn from(input: module_runtime::RuntimeSettingGetInput) -> Self {
|
||||
Self {
|
||||
@@ -114,6 +169,7 @@ impl From<module_runtime::RuntimeTrackingEventInput> for RuntimeTrackingEventInp
|
||||
|
||||
pub type CreationEntryConfigRecord =
|
||||
shared_contracts::creation_entry_config::CreationEntryConfigResponse;
|
||||
pub type AdminWorkVisibilityRecord = shared_contracts::admin::AdminWorkVisibilityEntryPayload;
|
||||
|
||||
pub(crate) fn map_creation_entry_config_procedure_result(
|
||||
result: CreationEntryConfigProcedureResult,
|
||||
@@ -131,6 +187,51 @@ pub(crate) fn map_creation_entry_config_procedure_result(
|
||||
))
|
||||
}
|
||||
|
||||
pub(crate) fn map_admin_work_visibility_list_procedure_result(
|
||||
result: AdminWorkVisibilityListProcedureResult,
|
||||
) -> Result<Vec<AdminWorkVisibilityRecord>, SpacetimeClientError> {
|
||||
if !result.ok {
|
||||
return Err(SpacetimeClientError::procedure_failed(result.error_message));
|
||||
}
|
||||
Ok(result
|
||||
.entries
|
||||
.into_iter()
|
||||
.map(map_admin_work_visibility_snapshot)
|
||||
.collect())
|
||||
}
|
||||
|
||||
pub(crate) fn map_admin_work_visibility_procedure_result(
|
||||
result: AdminWorkVisibilityProcedureResult,
|
||||
) -> Result<AdminWorkVisibilityRecord, SpacetimeClientError> {
|
||||
if !result.ok {
|
||||
return Err(SpacetimeClientError::procedure_failed(result.error_message));
|
||||
}
|
||||
result
|
||||
.record
|
||||
.map(map_admin_work_visibility_snapshot)
|
||||
.ok_or_else(|| SpacetimeClientError::missing_snapshot("后台作品可见性快照"))
|
||||
}
|
||||
|
||||
fn map_admin_work_visibility_snapshot(
|
||||
snapshot: AdminWorkVisibilitySnapshot,
|
||||
) -> AdminWorkVisibilityRecord {
|
||||
AdminWorkVisibilityRecord {
|
||||
source_type: snapshot.source_type,
|
||||
work_id: snapshot.work_id,
|
||||
profile_id: snapshot.profile_id,
|
||||
source_session_id: snapshot.source_session_id,
|
||||
public_work_code: snapshot.public_work_code,
|
||||
owner_user_id: snapshot.owner_user_id,
|
||||
author_display_name: snapshot.author_display_name,
|
||||
title: snapshot.title,
|
||||
subtitle: snapshot.subtitle,
|
||||
cover_image_src: snapshot.cover_image_src,
|
||||
visible: snapshot.visible,
|
||||
published_at_micros: snapshot.published_at_micros,
|
||||
updated_at_micros: snapshot.updated_at_micros,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn build_creation_entry_config_record_from_rows(
|
||||
header: CreationEntryConfig,
|
||||
mut creation_types: Vec<CreationEntryTypeConfig>,
|
||||
|
||||
Reference in New Issue
Block a user