106 lines
3.5 KiB
Rust
106 lines
3.5 KiB
Rust
//! 资产写入命令。
|
|
//!
|
|
//! 用于表达确认资产对象、绑定实体槽位和查询资产历史的输入,不直接访问 OSS。
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
#[cfg(feature = "spacetime-types")]
|
|
use spacetimedb::SpacetimeType;
|
|
|
|
use crate::domain::{
|
|
AssetEntityBindingSnapshot, AssetObjectAccessPolicy, AssetObjectUpsertSnapshot,
|
|
};
|
|
|
|
#[derive(Clone, Debug, PartialEq, Eq)]
|
|
pub struct ConfirmAssetObjectInput {
|
|
pub bucket: Option<String>,
|
|
pub object_key: String,
|
|
pub content_type: Option<String>,
|
|
pub content_length: Option<u64>,
|
|
pub content_hash: Option<String>,
|
|
pub asset_kind: String,
|
|
pub access_policy: Option<AssetObjectAccessPolicy>,
|
|
pub source_job_id: Option<String>,
|
|
pub owner_user_id: Option<String>,
|
|
pub profile_id: Option<String>,
|
|
pub entity_id: Option<String>,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct AssetHistoryListInput {
|
|
pub asset_kind: String,
|
|
pub limit: u32,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct AssetObjectUpsertInput {
|
|
pub asset_object_id: String,
|
|
pub bucket: String,
|
|
pub object_key: String,
|
|
pub access_policy: AssetObjectAccessPolicy,
|
|
pub content_type: Option<String>,
|
|
pub content_length: u64,
|
|
pub content_hash: Option<String>,
|
|
pub version: u32,
|
|
pub source_job_id: Option<String>,
|
|
pub owner_user_id: Option<String>,
|
|
pub profile_id: Option<String>,
|
|
pub entity_id: Option<String>,
|
|
pub asset_kind: String,
|
|
pub updated_at_micros: i64,
|
|
}
|
|
|
|
#[cfg_attr(feature = "spacetime-types", derive(SpacetimeType))]
|
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
pub struct AssetEntityBindingInput {
|
|
pub binding_id: String,
|
|
pub asset_object_id: String,
|
|
pub entity_kind: String,
|
|
pub entity_id: String,
|
|
pub slot: String,
|
|
pub asset_kind: String,
|
|
pub owner_user_id: Option<String>,
|
|
pub profile_id: Option<String>,
|
|
pub updated_at_micros: i64,
|
|
}
|
|
|
|
impl From<AssetObjectUpsertInput> for AssetObjectUpsertSnapshot {
|
|
fn from(value: AssetObjectUpsertInput) -> Self {
|
|
Self {
|
|
asset_object_id: value.asset_object_id,
|
|
bucket: value.bucket,
|
|
object_key: value.object_key,
|
|
access_policy: value.access_policy,
|
|
content_type: value.content_type,
|
|
content_length: value.content_length,
|
|
content_hash: value.content_hash,
|
|
version: value.version,
|
|
source_job_id: value.source_job_id,
|
|
owner_user_id: value.owner_user_id,
|
|
profile_id: value.profile_id,
|
|
entity_id: value.entity_id,
|
|
asset_kind: value.asset_kind,
|
|
created_at_micros: value.updated_at_micros,
|
|
updated_at_micros: value.updated_at_micros,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<AssetEntityBindingInput> for AssetEntityBindingSnapshot {
|
|
fn from(value: AssetEntityBindingInput) -> Self {
|
|
Self {
|
|
binding_id: value.binding_id,
|
|
asset_object_id: value.asset_object_id,
|
|
entity_kind: value.entity_kind,
|
|
entity_id: value.entity_id,
|
|
slot: value.slot,
|
|
asset_kind: value.asset_kind,
|
|
owner_user_id: value.owner_user_id,
|
|
profile_id: value.profile_id,
|
|
created_at_micros: value.updated_at_micros,
|
|
updated_at_micros: value.updated_at_micros,
|
|
}
|
|
}
|
|
}
|