合并最新 master 分支
Project CI / Backend tests (pull_request) Failing after 12s
Project CI / Repository checks (pull_request) Failing after 12s
Project CI / Frontend tests (pull_request) Failing after 58s
Project CI / Native shell tests (pull_request) Successful in 2m32s

带入 SpacetimeDB 2.7.0(hotfix3)工具链升级、后台灰度发布控制面恢复、
精选顺序分列瀑布流及后台素材预览统一。冲突仅三处文档:decision-log 与
pitfalls 双方条目并存,运维文档更新时间取新值。BgFilter 分支代码与部署
脚本零冲突;依赖升级后 bgfilter 46 测试全过。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 07:02:17 +00:00
187 changed files with 11561 additions and 883 deletions
+28 -28
View File
@@ -5348,9 +5348,9 @@ dependencies = [
[[package]]
name = "spacetimedb"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6eff5017248ff2e35e03564df947fdf3e963f7198be6ae1d9e894c2efb2ea15"
checksum = "f8ba4d29856a75aafc3c66fd47d39e11e20c5001ee323d90549ffe19980ef9ff"
dependencies = [
"anyhow",
"bytemuck",
@@ -5371,9 +5371,9 @@ dependencies = [
[[package]]
name = "spacetimedb-bindings-macro"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fce86c7657dcb42a33ce55f0100f98964dc15b64e79f06803a478676b74d6c82"
checksum = "4a9c2548accd66ba0444caf12916e60ca282054fe5701298f633aa6a2a90c38b"
dependencies = [
"heck 0.4.1",
"humantime",
@@ -5385,18 +5385,18 @@ dependencies = [
[[package]]
name = "spacetimedb-bindings-sys"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbe5f9d71d59bdb93d81a7a61eee75ac2f1f88f91e139a7e263261f9dbf316de"
checksum = "2fc1790a7705a2d83ee601c9b14e4fd543ee8fe777d5b6117d4c5d33fc6566d7"
dependencies = [
"spacetimedb-primitives",
]
[[package]]
name = "spacetimedb-client-api-messages"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1642404553853b56e521a12aa9849807d8e003433934c73eeebbc8671f1254f8"
checksum = "e2ef1840b2157a9487618ad360a078d7b5d86de5eb27494efa5bbbb2ca76b247"
dependencies = [
"bytes",
"bytestring",
@@ -5416,9 +5416,9 @@ dependencies = [
[[package]]
name = "spacetimedb-data-structures"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3407c90a3da48b1c421bbad6a2ee6de3855a77d73fae98773bcc058426f1318f"
checksum = "20df758e7067fb085e9393786b3b12289838eac9fd78601cb1aaf7e059904ccb"
dependencies = [
"ahash",
"crossbeam-queue",
@@ -5431,9 +5431,9 @@ dependencies = [
[[package]]
name = "spacetimedb-lib"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bceaf72bdbf1a624d55d17ebaa38f8cf78a4972e43641c6cbf94f82318b5581d"
checksum = "7a6b0417d7db37d991fd927a21298e09ad61cd5dc298eb9e1ac2433fe4a958a7"
dependencies = [
"anyhow",
"bitflags 2.13.0",
@@ -5456,9 +5456,9 @@ dependencies = [
[[package]]
name = "spacetimedb-memory-usage"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6cc1e19f664b47f4b3b82fb69b2fc096c3d82dc659ea705d62bbbec2fa9c2e83"
checksum = "892d4ef38414498d687d765c4b0a9f6390f786c6fc5ca640a09c42f5da902f99"
dependencies = [
"decorum",
"ethnum",
@@ -5466,9 +5466,9 @@ dependencies = [
[[package]]
name = "spacetimedb-metrics"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c794455ed96245d52d837c8bbc3493d1c17d9f6382e6c5fee1c88926c9aa04a"
checksum = "de1ef3c1d55ec819953211e5ae645f1152e2b894ea770d59b039a7133b2ebf5f"
dependencies = [
"arrayvec",
"itertools 0.12.1",
@@ -5478,9 +5478,9 @@ dependencies = [
[[package]]
name = "spacetimedb-primitives"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7525fda46b21fffdc62805099dee853a79000e0673ff6df4b8355cb0b8dabe8"
checksum = "2adee8bd225009feb67ab329aa4eae6b7fe6c4c0165d9d65814c07a4252b2d20"
dependencies = [
"bitflags 2.13.0",
"either",
@@ -5492,18 +5492,18 @@ dependencies = [
[[package]]
name = "spacetimedb-query-builder"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f283c4797961d9a94f623ee4c66e6a94d30861b6380a49a27ac2d9568e17125"
checksum = "1d8476efc6c3c1d9def4499bbeedcc015d5f13c75565dd7136180265dd45708c"
dependencies = [
"spacetimedb-lib",
]
[[package]]
name = "spacetimedb-sats"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6cefb87b7d5e760d43cb65855591e25af772bdcca19562e5796ae797240d1998"
checksum = "a6cfd92de752a8fd711ad2138ae79a80313be34061da6112fd46df1dd6365200"
dependencies = [
"anyhow",
"arrayvec",
@@ -5534,9 +5534,9 @@ dependencies = [
[[package]]
name = "spacetimedb-schema"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "775cfdeb406e5628bf78b2221b0e0fd2fcba583f691bb89ba1c9338790ecaf7d"
checksum = "444649a34ca14d1535d03a375deacb8ad4668f692576bff7091b6d4160b1d346"
dependencies = [
"anyhow",
"convert_case 0.6.0",
@@ -5565,9 +5565,9 @@ dependencies = [
[[package]]
name = "spacetimedb-sdk"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "074a6d8828638176eb8e9bba7a3e6fb75dc659b260717306eb966c7e10575cd7"
checksum = "ed0e49e45ab4828e9bf51d1c93db553f496c2836f1b49174f4019dc8c42e6525"
dependencies = [
"anymap3",
"base64 0.21.7",
@@ -5597,9 +5597,9 @@ dependencies = [
[[package]]
name = "spacetimedb-sql-parser"
version = "2.6.1"
version = "2.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b978b6d76cfbe5782a7f0dae7e25f6be4e7e13cfad26c9211d4eb4cdf8c22da"
checksum = "2b9908b30e69222970fd955e30235fe977c8fa12010d630949c77f603abf54a2"
dependencies = [
"derive_more",
"spacetimedb-lib",
+3 -3
View File
@@ -116,9 +116,9 @@ serde_urlencoded = "0.7"
sha1 = "0.10"
sha2 = "0.10"
socket2 = "0.6"
spacetimedb = "=2.6.1"
spacetimedb-sdk = "=2.6.1"
spacetimedb-lib = { version = "=2.6.1", default-features = false }
spacetimedb = "=2.7.0"
spacetimedb-sdk = "=2.7.0"
spacetimedb-lib = { version = "=2.7.0", default-features = false }
time = "0.3"
tokio = "1"
tokio-stream = "0.1"
+163 -13
View File
@@ -21,7 +21,7 @@ use reqwest::Client;
use serde::Deserialize;
use serde_json::{Map, Value};
use shared_contracts::admin::{
ADMIN_TAB_PERMISSIONS, AdminAccountRole,
ADMIN_TAB_PERMISSIONS, AdminAccountRole, AdminConfirmEditorShowcaseCampaignImageUploadRequest,
AdminCreateEditorShowcaseCampaignImageUploadTicketRequest,
AdminCreateEditorShowcaseCampaignImageUploadTicketResponse, AdminDashboardBreakdownRowPayload,
AdminDashboardChartBucketPayload, AdminDashboardChartPayload, AdminDashboardMetricsPayload,
@@ -50,7 +50,8 @@ use shared_contracts::admin::{
AdminUpsertPublicWorkInteractionConfigRequest, AdminWorkVisibilityListResponse,
};
use shared_contracts::assets::{
CreateDirectUploadTicketRequest, DirectUploadObjectAccess, GetReadUrlQuery,
ConfirmAssetObjectAccessPolicy, ConfirmAssetObjectRequest, CreateDirectUploadTicketRequest,
DirectUploadObjectAccess, GetReadUrlQuery,
};
#[cfg(any())]
use shared_contracts::creation_entry_config::{
@@ -71,8 +72,8 @@ use crate::{
admin_accounts::normalize_admin_account_username,
api_response::json_success_body,
assets::{
AssetReadAuthorization, create_direct_upload_ticket_for_owner,
get_asset_read_url_with_query,
AssetReadAuthorization, confirm_asset_object_for_owner,
create_direct_upload_ticket_for_owner, get_asset_read_url_with_query,
},
editor_generation_config::EditorGenerationPricingConfig,
editor_project::current_utc_micros,
@@ -113,6 +114,9 @@ const ADMIN_DASHBOARD_MAX_PERIOD_DAYS: i64 = 366;
const ADMIN_EDITOR_ASSET_DEFAULT_LIMIT: u32 = 80;
const ADMIN_EDITOR_ASSET_MAX_LIMIT: u32 = 200;
const ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_MAX_BYTES: u64 = 20 * 1024 * 1024;
const ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_OBJECT_KEY_PREFIX: &str =
"generated-character-drafts/editor/showcase-campaign/";
const ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_ASSET_KIND: &str = "editor_showcase_campaign_image";
#[derive(Clone, Debug)]
pub struct AuthenticatedAdmin {
@@ -903,6 +907,69 @@ pub async fn admin_create_editor_showcase_campaign_image_upload_ticket(
))
}
pub async fn admin_confirm_editor_showcase_campaign_image_upload(
State(state): State<AppState>,
Extension(request_context): Extension<RequestContext>,
Extension(admin): Extension<AuthenticatedAdmin>,
Json(payload): Json<AdminConfirmEditorShowcaseCampaignImageUploadRequest>,
) -> Result<Json<Value>, AppError> {
let confirm_request = build_admin_editor_showcase_campaign_image_confirm_request(payload)?;
confirm_asset_object_for_owner(
&state,
&request_context,
admin.session().subject.as_str(),
confirm_request,
)
.await
}
fn build_admin_editor_showcase_campaign_image_confirm_request(
payload: AdminConfirmEditorShowcaseCampaignImageUploadRequest,
) -> Result<ConfirmAssetObjectRequest, AppError> {
let bucket = payload.bucket.trim();
if bucket.is_empty() {
return Err(AppError::from_status(StatusCode::BAD_REQUEST)
.with_message("活动卡图片 bucket 不能为空"));
}
let object_key = payload.object_key.trim().trim_start_matches('/');
if !object_key.starts_with(ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_OBJECT_KEY_PREFIX)
|| object_key.len() == ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_OBJECT_KEY_PREFIX.len()
{
return Err(AppError::from_status(StatusCode::BAD_REQUEST)
.with_message("活动卡图片 Object Key 不属于后台活动卡目录"));
}
let content_type = payload.content_type.trim();
if !content_type.starts_with("image/") {
return Err(
AppError::from_status(StatusCode::BAD_REQUEST).with_message("活动卡只能确认图片对象")
);
}
if payload.content_length == 0 {
return Err(
AppError::from_status(StatusCode::BAD_REQUEST).with_message("活动卡图片不能为空")
);
}
if payload.content_length > ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_MAX_BYTES {
return Err(
AppError::from_status(StatusCode::BAD_REQUEST).with_message("活动卡图片不能超过 20MB")
);
}
Ok(ConfirmAssetObjectRequest {
bucket: Some(bucket.to_string()),
object_key: object_key.to_string(),
content_type: Some(content_type.to_string()),
content_length: Some(payload.content_length),
content_hash: None,
asset_kind: ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_ASSET_KIND.to_string(),
access_policy: Some(ConfirmAssetObjectAccessPolicy::Private),
source_job_id: None,
owner_user_id: None,
profile_id: None,
entity_id: None,
})
}
#[cfg(any())]
fn build_admin_creation_entry_config_response(
config: shared_contracts::creation_entry_config::CreationEntryConfigResponse,
@@ -989,6 +1056,7 @@ fn admin_editor_showcase_asset_payload_from_record(
task_id: record.task_id,
asset_kind: record.asset_kind,
generation_inputs: record.generation_inputs,
thumbnail_src: record.thumbnail_src,
generation_cost_mud_points: record.generation_cost_mud_points,
refund_mud_points: record.refund_mud_points,
review_status: record.review_status,
@@ -3940,9 +4008,9 @@ mod tests {
admin_editor_asset_group_payload, admin_editor_showcase_asset_payload_from_record,
append_spacetime_sql_response_chunk, apply_admin_database_table_filters,
build_admin_asset_read_url_audit, build_admin_dashboard_chart,
build_admin_database_table_row, build_admin_tracking_event_keys_sql,
build_admin_tracking_events_sql, build_body_preview, build_debug_base_url,
build_spacetime_schema_url, clamp_admin_database_table_limit,
build_admin_database_table_row, build_admin_editor_showcase_campaign_image_confirm_request,
build_admin_tracking_event_keys_sql, build_admin_tracking_events_sql, build_body_preview,
build_debug_base_url, build_spacetime_schema_url, clamp_admin_database_table_limit,
clamp_admin_tracking_event_limit, enforce_admin_request_permission,
finalize_admin_database_table_rows_response, group_admin_editor_asset_records,
hash_admin_password, is_admin_account_not_found, is_safe_spacetime_table_name,
@@ -3961,9 +4029,10 @@ mod tests {
};
use serde_json::json;
use shared_contracts::admin::{
AdminDashboardQuery, AdminDatabaseTableRowsQuery, AdminTrackingEventListQuery,
AdminConfirmEditorShowcaseCampaignImageUploadRequest, AdminDashboardQuery,
AdminDatabaseTableRowsQuery, AdminTrackingEventListQuery,
};
use shared_contracts::assets::GetReadUrlQuery;
use shared_contracts::assets::{ConfirmAssetObjectAccessPolicy, GetReadUrlQuery};
use spacetime_client::{
AdminDashboardBreakdownRecord, AdminDashboardDailyCountRecord,
AdminDashboardPaymentConversionRecord, AdminDashboardRetentionRecord,
@@ -4070,6 +4139,83 @@ mod tests {
assert!(draft.metadata.get("signedUrl").is_none());
}
#[test]
fn campaign_image_confirm_is_scoped_to_private_activity_card_objects() {
let request = build_admin_editor_showcase_campaign_image_confirm_request(
AdminConfirmEditorShowcaseCampaignImageUploadRequest {
bucket: " genarrative-release ".to_string(),
object_key:
" /generated-character-drafts/editor/showcase-campaign/current/card.png "
.to_string(),
content_type: " image/png ".to_string(),
content_length: 1024,
},
)
.expect("valid activity card upload should build a confirm request");
assert_eq!(request.bucket.as_deref(), Some("genarrative-release"));
assert_eq!(
request.object_key,
"generated-character-drafts/editor/showcase-campaign/current/card.png"
);
assert_eq!(request.content_type.as_deref(), Some("image/png"));
assert_eq!(request.content_length, Some(1024));
assert_eq!(request.asset_kind, "editor_showcase_campaign_image");
assert_eq!(
request.access_policy,
Some(ConfirmAssetObjectAccessPolicy::Private)
);
assert!(request.owner_user_id.is_none());
}
#[test]
fn campaign_image_confirm_rejects_objects_outside_activity_card_directory() {
let error = build_admin_editor_showcase_campaign_image_confirm_request(
AdminConfirmEditorShowcaseCampaignImageUploadRequest {
bucket: "genarrative-release".to_string(),
object_key: "generated-character-drafts/editor/asset-library/private.png"
.to_string(),
content_type: "image/png".to_string(),
content_length: 1024,
},
)
.expect_err("unrelated editor objects must not use the activity card confirm route");
assert_eq!(error.status_code(), StatusCode::BAD_REQUEST);
}
#[test]
fn campaign_image_confirm_rejects_invalid_media_and_size() {
for payload in [
AdminConfirmEditorShowcaseCampaignImageUploadRequest {
bucket: "genarrative-release".to_string(),
object_key: "generated-character-drafts/editor/showcase-campaign/current/card.txt"
.to_string(),
content_type: "text/plain".to_string(),
content_length: 1024,
},
AdminConfirmEditorShowcaseCampaignImageUploadRequest {
bucket: "genarrative-release".to_string(),
object_key: "generated-character-drafts/editor/showcase-campaign/current/empty.png"
.to_string(),
content_type: "image/png".to_string(),
content_length: 0,
},
AdminConfirmEditorShowcaseCampaignImageUploadRequest {
bucket: "genarrative-release".to_string(),
object_key:
"generated-character-drafts/editor/showcase-campaign/current/oversized.png"
.to_string(),
content_type: "image/png".to_string(),
content_length: super::ADMIN_EDITOR_SHOWCASE_CAMPAIGN_IMAGE_MAX_BYTES + 1,
},
] {
let error = build_admin_editor_showcase_campaign_image_confirm_request(payload)
.expect_err("invalid activity card uploads must fail before OSS HEAD");
assert_eq!(error.status_code(), StatusCode::BAD_REQUEST);
}
}
#[test]
fn admin_editor_showcase_asset_payload_resolves_author_profile() {
let state = AppState::new(AppConfig::default()).expect("state should build");
@@ -4078,10 +4224,10 @@ mod tests {
.ensure_orphan_work_owner_user("user-author-1", "author-1", "作者昵称", "SY-00000042")
.expect("author should be inserted");
let payload = admin_editor_showcase_asset_payload_from_record(
&state,
test_admin_editor_showcase_asset_record("user-author-1"),
);
let mut record = test_admin_editor_showcase_asset_record("user-author-1");
record.thumbnail_src =
Some("/generated-character-drafts/editor/spec-thumb.png".to_string());
let payload = admin_editor_showcase_asset_payload_from_record(&state, record);
assert_eq!(payload.owner_user_id, "user-author-1");
assert_eq!(payload.author_display_name.as_deref(), Some("作者昵称"));
@@ -4089,6 +4235,10 @@ mod tests {
payload.author_public_user_code.as_deref(),
Some("SY-00000042")
);
assert_eq!(
payload.thumbnail_src.as_deref(),
Some("/generated-character-drafts/editor/spec-thumb.png")
);
}
#[test]
+55 -1
View File
@@ -686,7 +686,23 @@ async fn authorize_asset_read_target(
})
.await
.map_err(map_asset_read_authorization_error)?;
if let Some(asset_object) = asset_object.as_ref() {
resolve_asset_read_access(
configured_bucket,
target,
authorization,
asset_object.as_ref(),
public_work_granted,
)
}
fn resolve_asset_read_access(
configured_bucket: &str,
target: &AssetReadTarget,
authorization: &AssetReadAuthorization,
asset_object: Option<&module_assets::AssetObjectRecord>,
public_work_granted: bool,
) -> Result<AssetReadAccessScope, AppError> {
if let Some(asset_object) = asset_object {
return require_asset_object_read_access(
asset_object,
configured_bucket,
@@ -696,6 +712,12 @@ async fn authorize_asset_read_target(
);
}
// 当前启用的活动卡可能来自历史上传,尚无 asset_object metadata;
// SpacetimeDB 只会对配置中的 exact object key 派生该授权,禁用或换图后立即失效。
if public_work_granted {
return Ok(AssetReadAccessScope::Public);
}
// 已登记对象始终服从 metadata ACL;只有没有 metadata 的历史资源才走公开前缀兼容。
if target.is_legacy_public_path && is_supported_legacy_public_object_key(&target.object_key) {
return Ok(AssetReadAccessScope::Public);
@@ -1120,6 +1142,38 @@ mod tests {
);
}
#[test]
fn current_campaign_grant_allows_exact_object_key_without_legacy_metadata() {
let target = super::AssetReadTarget {
object_key: "generated-character-drafts/editor/showcase-campaign/current/image.png"
.to_string(),
is_legacy_public_path: false,
};
assert!(matches!(
super::resolve_asset_read_access(
"genarrative-assets",
&target,
&super::AssetReadAuthorization::Anonymous,
None,
true,
),
Ok(super::AssetReadAccessScope::Public)
));
assert_eq!(
super::resolve_asset_read_access(
"genarrative-assets",
&target,
&super::AssetReadAuthorization::Anonymous,
None,
false,
)
.expect_err("unregistered object key without an exact grant should stay hidden")
.status_code(),
StatusCode::NOT_FOUND
);
}
#[test]
fn public_asset_read_url_expiry_is_capped_but_privileged_expiry_is_preserved() {
assert_eq!(
@@ -5,6 +5,7 @@ use axum::{
use crate::{
admin::{
admin_confirm_editor_showcase_campaign_image_upload,
admin_create_editor_showcase_campaign_image_upload_ticket, admin_dashboard,
admin_debug_http, admin_get_asset_read_url, admin_get_editor_generation_pricing,
admin_get_editor_showcase_campaign, admin_get_feature_gate_config,
@@ -174,6 +175,12 @@ pub fn router(state: AppState) -> Router<AppState> {
middleware::from_fn_with_state(state.clone(), require_admin_auth),
),
)
.route(
"/admin/api/editor-showcase/campaign/image-upload-confirm",
post(admin_confirm_editor_showcase_campaign_image_upload).route_layer(
middleware::from_fn_with_state(state.clone(), require_admin_auth),
),
)
.route(
"/admin/api/profile/redeem-codes",
get(admin_list_profile_redeem_codes)
+40 -1
View File
@@ -278,6 +278,7 @@ pub struct AdminEditorShowcaseAssetPayload {
pub task_id: Option<String>,
pub asset_kind: Option<String>,
pub generation_inputs: Option<Value>,
pub thumbnail_src: Option<String>,
pub generation_cost_mud_points: u64,
pub refund_mud_points: u64,
pub review_status: String,
@@ -374,6 +375,15 @@ pub struct AdminCreateEditorShowcaseCampaignImageUploadTicketResponse {
pub upload: AdminDirectUploadTicketPayload,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct AdminConfirmEditorShowcaseCampaignImageUploadRequest {
pub bucket: String,
pub object_key: String,
pub content_type: String,
pub content_length: u64,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct AdminDirectUploadTicketPayload {
@@ -989,7 +999,10 @@ pub struct AdminWalletRestrictionResponse {
mod tests {
use serde_json::json;
use super::{AdminEditorShowcaseAssetPayload, AdminRechargeRefundManualReviewResolveRequest};
use super::{
AdminConfirmEditorShowcaseCampaignImageUploadRequest, AdminEditorShowcaseAssetPayload,
AdminRechargeRefundManualReviewResolveRequest,
};
#[test]
fn refund_manual_review_resolution_request_uses_camel_case_contract() {
@@ -1008,6 +1021,26 @@ mod tests {
assert!(value.get("out_refund_no").is_none());
}
#[test]
fn editor_showcase_campaign_image_confirm_uses_camel_case_contract() {
let value = serde_json::to_value(AdminConfirmEditorShowcaseCampaignImageUploadRequest {
bucket: "genarrative-release".to_string(),
object_key: "generated-character-drafts/editor/showcase-campaign/current/card.png"
.to_string(),
content_type: "image/png".to_string(),
content_length: 1024,
})
.expect("request should serialize");
assert_eq!(
value["objectKey"],
json!("generated-character-drafts/editor/showcase-campaign/current/card.png")
);
assert_eq!(value["contentType"], json!("image/png"));
assert_eq!(value["contentLength"], json!(1024));
assert!(value.get("object_key").is_none());
}
#[test]
fn editor_showcase_asset_payload_serializes_author_fields_as_camel_case() {
let payload = AdminEditorShowcaseAssetPayload {
@@ -1028,6 +1061,7 @@ mod tests {
task_id: None,
asset_kind: Some("character".to_string()),
generation_inputs: None,
thumbnail_src: Some("/generated-character-drafts/editor/spec-thumb.png".to_string()),
generation_cost_mud_points: 12,
refund_mud_points: 6,
review_status: "pending".to_string(),
@@ -1050,7 +1084,12 @@ mod tests {
assert_eq!(value["authorDisplayName"], json!("作者昵称"));
assert_eq!(value["authorPublicUserCode"], json!("SY-00000042"));
assert_eq!(
value["thumbnailSrc"],
json!("/generated-character-drafts/editor/spec-thumb.png")
);
assert!(value.get("author_display_name").is_none());
assert!(value.get("author_public_user_code").is_none());
assert!(value.get("thumbnail_src").is_none());
}
}
@@ -1,7 +1,7 @@
// THIS FILE IS AUTOMATICALLY GENERATED BY SPACETIMEDB. EDITS TO THIS FILE
// WILL NOT BE SAVED. MODIFY TABLES IN YOUR MODULE SOURCE CODE INSTEAD.
// This was generated using spacetimedb cli version 2.6.1 (commit 052c83fe984a4c4eb7bb4f9afa5c6b1903891d87).
// This was generated using spacetimedb cli version 2.7.0 (commit d220349adb7af7eefa810eb08a185609356b83f6).
#![allow(unused, clippy::all)]
use spacetimedb_sdk::__codegen::{self as __sdk, __lib, __sats, __ws};
@@ -18,6 +18,18 @@ pub struct AdminAccountTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `admin_account`.
pub struct AdminAccountTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AdminAccountTableAccessor {
type Row = AdminAccount;
type Handle<'db> = AdminAccountTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.admin_account()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `admin_account`.
///
@@ -40,6 +52,18 @@ impl AdminAccountTableAccess for super::RemoteTables {
pub struct AdminAccountInsertCallbackId(__sdk::CallbackId);
pub struct AdminAccountDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AdminAccountTableHandle<'ctx> {
type Row = AdminAccount;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AdminAccount> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AdminAccountTableHandle<'ctx> {
type Row = AdminAccount;
type EventContext = super::EventContext;
@@ -78,6 +102,36 @@ impl<'ctx> __sdk::Table for AdminAccountTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AdminAccountTableHandle<'ctx> {
type InsertCallbackId = AdminAccountInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AdminAccountInsertCallbackId {
AdminAccountInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AdminAccountInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AdminAccountTableHandle<'ctx> {
type DeleteCallbackId = AdminAccountDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AdminAccountDeleteCallbackId {
AdminAccountDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AdminAccountDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AdminAccountUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AdminAccountTableHandle<'ctx> {
@@ -95,6 +149,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AdminAccountTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AdminAccountTableHandle<'ctx> {
type UpdateCallbackId = AdminAccountUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AdminAccountUpdateCallbackId {
AdminAccountUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AdminAccountUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `account_id` unique index on the table `admin_account`,
/// which allows point queries on the field of the same name
/// via the [`AdminAccountAccountIdUnique::find`] method.
@@ -19,6 +19,18 @@ pub struct AiResultReferenceTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `ai_result_reference`.
pub struct AiResultReferenceTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AiResultReferenceTableAccessor {
type Row = AiResultReference;
type Handle<'db> = AiResultReferenceTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.ai_result_reference()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `ai_result_reference`.
///
@@ -43,6 +55,18 @@ impl AiResultReferenceTableAccess for super::RemoteTables {
pub struct AiResultReferenceInsertCallbackId(__sdk::CallbackId);
pub struct AiResultReferenceDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AiResultReferenceTableHandle<'ctx> {
type Row = AiResultReference;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AiResultReference> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AiResultReferenceTableHandle<'ctx> {
type Row = AiResultReference;
type EventContext = super::EventContext;
@@ -81,6 +105,36 @@ impl<'ctx> __sdk::Table for AiResultReferenceTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AiResultReferenceTableHandle<'ctx> {
type InsertCallbackId = AiResultReferenceInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiResultReferenceInsertCallbackId {
AiResultReferenceInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AiResultReferenceInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AiResultReferenceTableHandle<'ctx> {
type DeleteCallbackId = AiResultReferenceDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiResultReferenceDeleteCallbackId {
AiResultReferenceDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AiResultReferenceDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AiResultReferenceUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AiResultReferenceTableHandle<'ctx> {
@@ -98,6 +152,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AiResultReferenceTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AiResultReferenceTableHandle<'ctx> {
type UpdateCallbackId = AiResultReferenceUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AiResultReferenceUpdateCallbackId {
AiResultReferenceUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AiResultReferenceUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `result_reference_row_id` unique index on the table `ai_result_reference`,
/// which allows point queries on the field of the same name
/// via the [`AiResultReferenceResultReferenceRowIdUnique::find`] method.
@@ -21,6 +21,18 @@ pub struct AiTaskEventTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `ai_task_event`.
pub struct AiTaskEventTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AiTaskEventTableAccessor {
type Row = AiTaskEvent;
type Handle<'db> = AiTaskEventTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.ai_task_event()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `ai_task_event`.
///
@@ -42,6 +54,18 @@ impl AiTaskEventTableAccess for super::RemoteTables {
pub struct AiTaskEventInsertCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AiTaskEventTableHandle<'ctx> {
type Row = AiTaskEvent;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AiTaskEvent> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::EventTable for AiTaskEventTableHandle<'ctx> {
type Row = AiTaskEvent;
type EventContext = super::EventContext;
@@ -67,6 +91,21 @@ impl<'ctx> __sdk::EventTable for AiTaskEventTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AiTaskEventTableHandle<'ctx> {
type InsertCallbackId = AiTaskEventInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTaskEventInsertCallbackId {
AiTaskEventInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AiTaskEventInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
#[doc(hidden)]
pub(super) fn register_table(client_cache: &mut __sdk::ClientCache<super::RemoteModule>) {
let _table = client_cache.get_or_make_table::<AiTaskEvent>("ai_task_event");
@@ -20,6 +20,18 @@ pub struct AiTaskStageTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `ai_task_stage`.
pub struct AiTaskStageTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AiTaskStageTableAccessor {
type Row = AiTaskStage;
type Handle<'db> = AiTaskStageTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.ai_task_stage()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `ai_task_stage`.
///
@@ -42,6 +54,18 @@ impl AiTaskStageTableAccess for super::RemoteTables {
pub struct AiTaskStageInsertCallbackId(__sdk::CallbackId);
pub struct AiTaskStageDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AiTaskStageTableHandle<'ctx> {
type Row = AiTaskStage;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AiTaskStage> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AiTaskStageTableHandle<'ctx> {
type Row = AiTaskStage;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for AiTaskStageTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AiTaskStageTableHandle<'ctx> {
type InsertCallbackId = AiTaskStageInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTaskStageInsertCallbackId {
AiTaskStageInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AiTaskStageInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AiTaskStageTableHandle<'ctx> {
type DeleteCallbackId = AiTaskStageDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTaskStageDeleteCallbackId {
AiTaskStageDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AiTaskStageDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AiTaskStageUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AiTaskStageTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AiTaskStageTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AiTaskStageTableHandle<'ctx> {
type UpdateCallbackId = AiTaskStageUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AiTaskStageUpdateCallbackId {
AiTaskStageUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AiTaskStageUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `task_stage_id` unique index on the table `ai_task_stage`,
/// which allows point queries on the field of the same name
/// via the [`AiTaskStageTaskStageIdUnique::find`] method.
@@ -20,6 +20,18 @@ pub struct AiTaskTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `ai_task`.
pub struct AiTaskTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AiTaskTableAccessor {
type Row = AiTask;
type Handle<'db> = AiTaskTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.ai_task()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `ai_task`.
///
@@ -42,6 +54,18 @@ impl AiTaskTableAccess for super::RemoteTables {
pub struct AiTaskInsertCallbackId(__sdk::CallbackId);
pub struct AiTaskDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AiTaskTableHandle<'ctx> {
type Row = AiTask;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AiTask> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AiTaskTableHandle<'ctx> {
type Row = AiTask;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for AiTaskTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AiTaskTableHandle<'ctx> {
type InsertCallbackId = AiTaskInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTaskInsertCallbackId {
AiTaskInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AiTaskInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AiTaskTableHandle<'ctx> {
type DeleteCallbackId = AiTaskDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTaskDeleteCallbackId {
AiTaskDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AiTaskDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AiTaskUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AiTaskTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AiTaskTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AiTaskTableHandle<'ctx> {
type UpdateCallbackId = AiTaskUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AiTaskUpdateCallbackId {
AiTaskUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AiTaskUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `task_id` unique index on the table `ai_task`,
/// which allows point queries on the field of the same name
/// via the [`AiTaskTaskIdUnique::find`] method.
@@ -19,6 +19,18 @@ pub struct AiTextChunkTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `ai_text_chunk`.
pub struct AiTextChunkTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AiTextChunkTableAccessor {
type Row = AiTextChunk;
type Handle<'db> = AiTextChunkTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.ai_text_chunk()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `ai_text_chunk`.
///
@@ -41,6 +53,18 @@ impl AiTextChunkTableAccess for super::RemoteTables {
pub struct AiTextChunkInsertCallbackId(__sdk::CallbackId);
pub struct AiTextChunkDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AiTextChunkTableHandle<'ctx> {
type Row = AiTextChunk;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AiTextChunk> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AiTextChunkTableHandle<'ctx> {
type Row = AiTextChunk;
type EventContext = super::EventContext;
@@ -79,6 +103,36 @@ impl<'ctx> __sdk::Table for AiTextChunkTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AiTextChunkTableHandle<'ctx> {
type InsertCallbackId = AiTextChunkInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTextChunkInsertCallbackId {
AiTextChunkInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AiTextChunkInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AiTextChunkTableHandle<'ctx> {
type DeleteCallbackId = AiTextChunkDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AiTextChunkDeleteCallbackId {
AiTextChunkDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AiTextChunkDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AiTextChunkUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AiTextChunkTableHandle<'ctx> {
@@ -96,6 +150,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AiTextChunkTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AiTextChunkTableHandle<'ctx> {
type UpdateCallbackId = AiTextChunkUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AiTextChunkUpdateCallbackId {
AiTextChunkUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AiTextChunkUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `text_chunk_row_id` unique index on the table `ai_text_chunk`,
/// which allows point queries on the field of the same name
/// via the [`AiTextChunkTextChunkRowIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct AnalyticsDateDimensionTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `analytics_date_dimension`.
pub struct AnalyticsDateDimensionTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AnalyticsDateDimensionTableAccessor {
type Row = AnalyticsDateDimension;
type Handle<'db> = AnalyticsDateDimensionTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.analytics_date_dimension()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `analytics_date_dimension`.
///
@@ -42,6 +54,18 @@ impl AnalyticsDateDimensionTableAccess for super::RemoteTables {
pub struct AnalyticsDateDimensionInsertCallbackId(__sdk::CallbackId);
pub struct AnalyticsDateDimensionDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AnalyticsDateDimensionTableHandle<'ctx> {
type Row = AnalyticsDateDimension;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AnalyticsDateDimension> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AnalyticsDateDimensionTableHandle<'ctx> {
type Row = AnalyticsDateDimension;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for AnalyticsDateDimensionTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AnalyticsDateDimensionTableHandle<'ctx> {
type InsertCallbackId = AnalyticsDateDimensionInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AnalyticsDateDimensionInsertCallbackId {
AnalyticsDateDimensionInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AnalyticsDateDimensionInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AnalyticsDateDimensionTableHandle<'ctx> {
type DeleteCallbackId = AnalyticsDateDimensionDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AnalyticsDateDimensionDeleteCallbackId {
AnalyticsDateDimensionDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AnalyticsDateDimensionDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AnalyticsDateDimensionUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AnalyticsDateDimensionTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AnalyticsDateDimensionTableHandle<'ctx
}
}
impl<'ctx> __sdk::WithUpdate for AnalyticsDateDimensionTableHandle<'ctx> {
type UpdateCallbackId = AnalyticsDateDimensionUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AnalyticsDateDimensionUpdateCallbackId {
AnalyticsDateDimensionUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AnalyticsDateDimensionUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `date_key` unique index on the table `analytics_date_dimension`,
/// which allows point queries on the field of the same name
/// via the [`AnalyticsDateDimensionDateKeyUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct AssetEntityBindingTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `asset_entity_binding`.
pub struct AssetEntityBindingTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AssetEntityBindingTableAccessor {
type Row = AssetEntityBinding;
type Handle<'db> = AssetEntityBindingTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.asset_entity_binding()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `asset_entity_binding`.
///
@@ -42,6 +54,18 @@ impl AssetEntityBindingTableAccess for super::RemoteTables {
pub struct AssetEntityBindingInsertCallbackId(__sdk::CallbackId);
pub struct AssetEntityBindingDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AssetEntityBindingTableHandle<'ctx> {
type Row = AssetEntityBinding;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AssetEntityBinding> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AssetEntityBindingTableHandle<'ctx> {
type Row = AssetEntityBinding;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for AssetEntityBindingTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AssetEntityBindingTableHandle<'ctx> {
type InsertCallbackId = AssetEntityBindingInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetEntityBindingInsertCallbackId {
AssetEntityBindingInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AssetEntityBindingInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AssetEntityBindingTableHandle<'ctx> {
type DeleteCallbackId = AssetEntityBindingDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetEntityBindingDeleteCallbackId {
AssetEntityBindingDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AssetEntityBindingDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AssetEntityBindingUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AssetEntityBindingTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AssetEntityBindingTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AssetEntityBindingTableHandle<'ctx> {
type UpdateCallbackId = AssetEntityBindingUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AssetEntityBindingUpdateCallbackId {
AssetEntityBindingUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AssetEntityBindingUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `binding_id` unique index on the table `asset_entity_binding`,
/// which allows point queries on the field of the same name
/// via the [`AssetEntityBindingBindingIdUnique::find`] method.
@@ -19,6 +19,18 @@ pub struct AssetEventTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `asset_event`.
pub struct AssetEventTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AssetEventTableAccessor {
type Row = AssetEvent;
type Handle<'db> = AssetEventTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.asset_event()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `asset_event`.
///
@@ -40,6 +52,18 @@ impl AssetEventTableAccess for super::RemoteTables {
pub struct AssetEventInsertCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AssetEventTableHandle<'ctx> {
type Row = AssetEvent;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AssetEvent> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::EventTable for AssetEventTableHandle<'ctx> {
type Row = AssetEvent;
type EventContext = super::EventContext;
@@ -65,6 +89,21 @@ impl<'ctx> __sdk::EventTable for AssetEventTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AssetEventTableHandle<'ctx> {
type InsertCallbackId = AssetEventInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetEventInsertCallbackId {
AssetEventInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AssetEventInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
#[doc(hidden)]
pub(super) fn register_table(client_cache: &mut __sdk::ClientCache<super::RemoteModule>) {
let _table = client_cache.get_or_make_table::<AssetEvent>("asset_event");
@@ -19,6 +19,18 @@ pub struct AssetObjectTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `asset_object`.
pub struct AssetObjectTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AssetObjectTableAccessor {
type Row = AssetObject;
type Handle<'db> = AssetObjectTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.asset_object()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `asset_object`.
///
@@ -41,6 +53,18 @@ impl AssetObjectTableAccess for super::RemoteTables {
pub struct AssetObjectInsertCallbackId(__sdk::CallbackId);
pub struct AssetObjectDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AssetObjectTableHandle<'ctx> {
type Row = AssetObject;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AssetObject> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AssetObjectTableHandle<'ctx> {
type Row = AssetObject;
type EventContext = super::EventContext;
@@ -79,6 +103,36 @@ impl<'ctx> __sdk::Table for AssetObjectTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AssetObjectTableHandle<'ctx> {
type InsertCallbackId = AssetObjectInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetObjectInsertCallbackId {
AssetObjectInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AssetObjectInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AssetObjectTableHandle<'ctx> {
type DeleteCallbackId = AssetObjectDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetObjectDeleteCallbackId {
AssetObjectDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AssetObjectDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AssetObjectUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AssetObjectTableHandle<'ctx> {
@@ -96,6 +150,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AssetObjectTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AssetObjectTableHandle<'ctx> {
type UpdateCallbackId = AssetObjectUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AssetObjectUpdateCallbackId {
AssetObjectUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AssetObjectUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `asset_object_id` unique index on the table `asset_object`,
/// which allows point queries on the field of the same name
/// via the [`AssetObjectAssetObjectIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct AssetOperationWalletSettlementTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `asset_operation_wallet_settlement`.
pub struct AssetOperationWalletSettlementTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AssetOperationWalletSettlementTableAccessor {
type Row = AssetOperationWalletSettlement;
type Handle<'db> = AssetOperationWalletSettlementTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.asset_operation_wallet_settlement()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `asset_operation_wallet_settlement`.
///
@@ -42,6 +54,18 @@ impl AssetOperationWalletSettlementTableAccess for super::RemoteTables {
pub struct AssetOperationWalletSettlementInsertCallbackId(__sdk::CallbackId);
pub struct AssetOperationWalletSettlementDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AssetOperationWalletSettlementTableHandle<'ctx> {
type Row = AssetOperationWalletSettlement;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AssetOperationWalletSettlement> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AssetOperationWalletSettlementTableHandle<'ctx> {
type Row = AssetOperationWalletSettlement;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for AssetOperationWalletSettlementTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AssetOperationWalletSettlementTableHandle<'ctx> {
type InsertCallbackId = AssetOperationWalletSettlementInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetOperationWalletSettlementInsertCallbackId {
AssetOperationWalletSettlementInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AssetOperationWalletSettlementInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AssetOperationWalletSettlementTableHandle<'ctx> {
type DeleteCallbackId = AssetOperationWalletSettlementDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AssetOperationWalletSettlementDeleteCallbackId {
AssetOperationWalletSettlementDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AssetOperationWalletSettlementDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AssetOperationWalletSettlementUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AssetOperationWalletSettlementTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AssetOperationWalletSettlementTableHan
}
}
impl<'ctx> __sdk::WithUpdate for AssetOperationWalletSettlementTableHandle<'ctx> {
type UpdateCallbackId = AssetOperationWalletSettlementUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AssetOperationWalletSettlementUpdateCallbackId {
AssetOperationWalletSettlementUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AssetOperationWalletSettlementUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `consume_ledger_id` unique index on the table `asset_operation_wallet_settlement`,
/// which allows point queries on the field of the same name
/// via the [`AssetOperationWalletSettlementConsumeLedgerIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct AuthIdentityTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `auth_identity`.
pub struct AuthIdentityTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AuthIdentityTableAccessor {
type Row = AuthIdentity;
type Handle<'db> = AuthIdentityTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.auth_identity()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `auth_identity`.
///
@@ -40,6 +52,18 @@ impl AuthIdentityTableAccess for super::RemoteTables {
pub struct AuthIdentityInsertCallbackId(__sdk::CallbackId);
pub struct AuthIdentityDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AuthIdentityTableHandle<'ctx> {
type Row = AuthIdentity;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AuthIdentity> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AuthIdentityTableHandle<'ctx> {
type Row = AuthIdentity;
type EventContext = super::EventContext;
@@ -78,6 +102,36 @@ impl<'ctx> __sdk::Table for AuthIdentityTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AuthIdentityTableHandle<'ctx> {
type InsertCallbackId = AuthIdentityInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AuthIdentityInsertCallbackId {
AuthIdentityInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AuthIdentityInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AuthIdentityTableHandle<'ctx> {
type DeleteCallbackId = AuthIdentityDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AuthIdentityDeleteCallbackId {
AuthIdentityDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AuthIdentityDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AuthIdentityUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AuthIdentityTableHandle<'ctx> {
@@ -95,6 +149,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AuthIdentityTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithUpdate for AuthIdentityTableHandle<'ctx> {
type UpdateCallbackId = AuthIdentityUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AuthIdentityUpdateCallbackId {
AuthIdentityUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AuthIdentityUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `identity_id` unique index on the table `auth_identity`,
/// which allows point queries on the field of the same name
/// via the [`AuthIdentityIdentityIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct AuthStoreProjectionMetaTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `auth_store_projection_meta`.
pub struct AuthStoreProjectionMetaTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for AuthStoreProjectionMetaTableAccessor {
type Row = AuthStoreProjectionMeta;
type Handle<'db> = AuthStoreProjectionMetaTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.auth_store_projection_meta()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `auth_store_projection_meta`.
///
@@ -42,6 +54,18 @@ impl AuthStoreProjectionMetaTableAccess for super::RemoteTables {
pub struct AuthStoreProjectionMetaInsertCallbackId(__sdk::CallbackId);
pub struct AuthStoreProjectionMetaDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for AuthStoreProjectionMetaTableHandle<'ctx> {
type Row = AuthStoreProjectionMeta;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = AuthStoreProjectionMeta> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for AuthStoreProjectionMetaTableHandle<'ctx> {
type Row = AuthStoreProjectionMeta;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for AuthStoreProjectionMetaTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for AuthStoreProjectionMetaTableHandle<'ctx> {
type InsertCallbackId = AuthStoreProjectionMetaInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AuthStoreProjectionMetaInsertCallbackId {
AuthStoreProjectionMetaInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: AuthStoreProjectionMetaInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for AuthStoreProjectionMetaTableHandle<'ctx> {
type DeleteCallbackId = AuthStoreProjectionMetaDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> AuthStoreProjectionMetaDeleteCallbackId {
AuthStoreProjectionMetaDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: AuthStoreProjectionMetaDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct AuthStoreProjectionMetaUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for AuthStoreProjectionMetaTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for AuthStoreProjectionMetaTableHandle<'ct
}
}
impl<'ctx> __sdk::WithUpdate for AuthStoreProjectionMetaTableHandle<'ctx> {
type UpdateCallbackId = AuthStoreProjectionMetaUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> AuthStoreProjectionMetaUpdateCallbackId {
AuthStoreProjectionMetaUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: AuthStoreProjectionMetaUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `meta_id` unique index on the table `auth_store_projection_meta`,
/// which allows point queries on the field of the same name
/// via the [`AuthStoreProjectionMetaMetaIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct BarkBattleDraftConfigTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `bark_battle_draft_config`.
pub struct BarkBattleDraftConfigTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for BarkBattleDraftConfigTableAccessor {
type Row = BarkBattleDraftConfigRow;
type Handle<'db> = BarkBattleDraftConfigTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.bark_battle_draft_config()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `bark_battle_draft_config`.
///
@@ -42,6 +54,18 @@ impl BarkBattleDraftConfigTableAccess for super::RemoteTables {
pub struct BarkBattleDraftConfigInsertCallbackId(__sdk::CallbackId);
pub struct BarkBattleDraftConfigDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for BarkBattleDraftConfigTableHandle<'ctx> {
type Row = BarkBattleDraftConfigRow;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = BarkBattleDraftConfigRow> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for BarkBattleDraftConfigTableHandle<'ctx> {
type Row = BarkBattleDraftConfigRow;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for BarkBattleDraftConfigTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for BarkBattleDraftConfigTableHandle<'ctx> {
type InsertCallbackId = BarkBattleDraftConfigInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattleDraftConfigInsertCallbackId {
BarkBattleDraftConfigInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: BarkBattleDraftConfigInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for BarkBattleDraftConfigTableHandle<'ctx> {
type DeleteCallbackId = BarkBattleDraftConfigDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattleDraftConfigDeleteCallbackId {
BarkBattleDraftConfigDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: BarkBattleDraftConfigDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct BarkBattleDraftConfigUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattleDraftConfigTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattleDraftConfigTableHandle<'ctx>
}
}
impl<'ctx> __sdk::WithUpdate for BarkBattleDraftConfigTableHandle<'ctx> {
type UpdateCallbackId = BarkBattleDraftConfigUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> BarkBattleDraftConfigUpdateCallbackId {
BarkBattleDraftConfigUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: BarkBattleDraftConfigUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `draft_id` unique index on the table `bark_battle_draft_config`,
/// which allows point queries on the field of the same name
/// via the [`BarkBattleDraftConfigDraftIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct BarkBattleLeaderboardEntryTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `bark_battle_leaderboard_entry`.
pub struct BarkBattleLeaderboardEntryTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for BarkBattleLeaderboardEntryTableAccessor {
type Row = BarkBattleLeaderboardEntryRow;
type Handle<'db> = BarkBattleLeaderboardEntryTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.bark_battle_leaderboard_entry()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `bark_battle_leaderboard_entry`.
///
@@ -42,6 +54,18 @@ impl BarkBattleLeaderboardEntryTableAccess for super::RemoteTables {
pub struct BarkBattleLeaderboardEntryInsertCallbackId(__sdk::CallbackId);
pub struct BarkBattleLeaderboardEntryDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for BarkBattleLeaderboardEntryTableHandle<'ctx> {
type Row = BarkBattleLeaderboardEntryRow;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = BarkBattleLeaderboardEntryRow> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for BarkBattleLeaderboardEntryTableHandle<'ctx> {
type Row = BarkBattleLeaderboardEntryRow;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for BarkBattleLeaderboardEntryTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for BarkBattleLeaderboardEntryTableHandle<'ctx> {
type InsertCallbackId = BarkBattleLeaderboardEntryInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattleLeaderboardEntryInsertCallbackId {
BarkBattleLeaderboardEntryInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: BarkBattleLeaderboardEntryInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for BarkBattleLeaderboardEntryTableHandle<'ctx> {
type DeleteCallbackId = BarkBattleLeaderboardEntryDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattleLeaderboardEntryDeleteCallbackId {
BarkBattleLeaderboardEntryDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: BarkBattleLeaderboardEntryDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct BarkBattleLeaderboardEntryUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattleLeaderboardEntryTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattleLeaderboardEntryTableHandle<
}
}
impl<'ctx> __sdk::WithUpdate for BarkBattleLeaderboardEntryTableHandle<'ctx> {
type UpdateCallbackId = BarkBattleLeaderboardEntryUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> BarkBattleLeaderboardEntryUpdateCallbackId {
BarkBattleLeaderboardEntryUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: BarkBattleLeaderboardEntryUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `leaderboard_entry_id` unique index on the table `bark_battle_leaderboard_entry`,
/// which allows point queries on the field of the same name
/// via the [`BarkBattleLeaderboardEntryLeaderboardEntryIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct BarkBattlePersonalBestProjectionTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `bark_battle_personal_best_projection`.
pub struct BarkBattlePersonalBestProjectionTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for BarkBattlePersonalBestProjectionTableAccessor {
type Row = BarkBattlePersonalBestProjectionRow;
type Handle<'db> = BarkBattlePersonalBestProjectionTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.bark_battle_personal_best_projection()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `bark_battle_personal_best_projection`.
///
@@ -46,6 +58,18 @@ impl BarkBattlePersonalBestProjectionTableAccess for super::RemoteTables {
pub struct BarkBattlePersonalBestProjectionInsertCallbackId(__sdk::CallbackId);
pub struct BarkBattlePersonalBestProjectionDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
type Row = BarkBattlePersonalBestProjectionRow;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = BarkBattlePersonalBestProjectionRow> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
type Row = BarkBattlePersonalBestProjectionRow;
type EventContext = super::EventContext;
@@ -84,6 +108,36 @@ impl<'ctx> __sdk::Table for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
type InsertCallbackId = BarkBattlePersonalBestProjectionInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattlePersonalBestProjectionInsertCallbackId {
BarkBattlePersonalBestProjectionInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: BarkBattlePersonalBestProjectionInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
type DeleteCallbackId = BarkBattlePersonalBestProjectionDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattlePersonalBestProjectionDeleteCallbackId {
BarkBattlePersonalBestProjectionDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: BarkBattlePersonalBestProjectionDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct BarkBattlePersonalBestProjectionUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
@@ -101,6 +155,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattlePersonalBestProjectionTableH
}
}
impl<'ctx> __sdk::WithUpdate for BarkBattlePersonalBestProjectionTableHandle<'ctx> {
type UpdateCallbackId = BarkBattlePersonalBestProjectionUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> BarkBattlePersonalBestProjectionUpdateCallbackId {
BarkBattlePersonalBestProjectionUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: BarkBattlePersonalBestProjectionUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `personal_best_id` unique index on the table `bark_battle_personal_best_projection`,
/// which allows point queries on the field of the same name
/// via the [`BarkBattlePersonalBestProjectionPersonalBestIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct BarkBattlePublishedConfigTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `bark_battle_published_config`.
pub struct BarkBattlePublishedConfigTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for BarkBattlePublishedConfigTableAccessor {
type Row = BarkBattlePublishedConfigRow;
type Handle<'db> = BarkBattlePublishedConfigTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.bark_battle_published_config()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `bark_battle_published_config`.
///
@@ -42,6 +54,18 @@ impl BarkBattlePublishedConfigTableAccess for super::RemoteTables {
pub struct BarkBattlePublishedConfigInsertCallbackId(__sdk::CallbackId);
pub struct BarkBattlePublishedConfigDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for BarkBattlePublishedConfigTableHandle<'ctx> {
type Row = BarkBattlePublishedConfigRow;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = BarkBattlePublishedConfigRow> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for BarkBattlePublishedConfigTableHandle<'ctx> {
type Row = BarkBattlePublishedConfigRow;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for BarkBattlePublishedConfigTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for BarkBattlePublishedConfigTableHandle<'ctx> {
type InsertCallbackId = BarkBattlePublishedConfigInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattlePublishedConfigInsertCallbackId {
BarkBattlePublishedConfigInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: BarkBattlePublishedConfigInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for BarkBattlePublishedConfigTableHandle<'ctx> {
type DeleteCallbackId = BarkBattlePublishedConfigDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattlePublishedConfigDeleteCallbackId {
BarkBattlePublishedConfigDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: BarkBattlePublishedConfigDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct BarkBattlePublishedConfigUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattlePublishedConfigTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattlePublishedConfigTableHandle<'
}
}
impl<'ctx> __sdk::WithUpdate for BarkBattlePublishedConfigTableHandle<'ctx> {
type UpdateCallbackId = BarkBattlePublishedConfigUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> BarkBattlePublishedConfigUpdateCallbackId {
BarkBattlePublishedConfigUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: BarkBattlePublishedConfigUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `work_id` unique index on the table `bark_battle_published_config`,
/// which allows point queries on the field of the same name
/// via the [`BarkBattlePublishedConfigWorkIdUnique::find`] method.
@@ -18,6 +18,18 @@ pub struct BarkBattleRuntimeRunTableHandle<'ctx> {
ctx: std::marker::PhantomData<&'ctx super::RemoteTables>,
}
/// Lifetime-aware accessor marker for the table `bark_battle_runtime_run`.
pub struct BarkBattleRuntimeRunTableAccessor;
impl __sdk::TableAccessor<super::RemoteTables> for BarkBattleRuntimeRunTableAccessor {
type Row = BarkBattleRuntimeRunRow;
type Handle<'db> = BarkBattleRuntimeRunTableHandle<'db>;
fn get<'db>(db: &'db super::RemoteTables) -> Self::Handle<'db> {
db.bark_battle_runtime_run()
}
}
#[allow(non_camel_case_types)]
/// Extension trait for access to the table `bark_battle_runtime_run`.
///
@@ -42,6 +54,18 @@ impl BarkBattleRuntimeRunTableAccess for super::RemoteTables {
pub struct BarkBattleRuntimeRunInsertCallbackId(__sdk::CallbackId);
pub struct BarkBattleRuntimeRunDeleteCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableLike for BarkBattleRuntimeRunTableHandle<'ctx> {
type Row = BarkBattleRuntimeRunRow;
type EventContext = super::EventContext;
fn count(&self) -> u64 {
self.imp.count()
}
fn iter(&self) -> impl Iterator<Item = BarkBattleRuntimeRunRow> + '_ {
self.imp.iter()
}
}
impl<'ctx> __sdk::Table for BarkBattleRuntimeRunTableHandle<'ctx> {
type Row = BarkBattleRuntimeRunRow;
type EventContext = super::EventContext;
@@ -80,6 +104,36 @@ impl<'ctx> __sdk::Table for BarkBattleRuntimeRunTableHandle<'ctx> {
}
}
impl<'ctx> __sdk::WithInsert for BarkBattleRuntimeRunTableHandle<'ctx> {
type InsertCallbackId = BarkBattleRuntimeRunInsertCallbackId;
fn on_insert(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattleRuntimeRunInsertCallbackId {
BarkBattleRuntimeRunInsertCallbackId(self.imp.on_insert(Box::new(callback)))
}
fn remove_on_insert(&self, callback: BarkBattleRuntimeRunInsertCallbackId) {
self.imp.remove_on_insert(callback.0)
}
}
impl<'ctx> __sdk::WithDelete for BarkBattleRuntimeRunTableHandle<'ctx> {
type DeleteCallbackId = BarkBattleRuntimeRunDeleteCallbackId;
fn on_delete(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row) + Send + 'static,
) -> BarkBattleRuntimeRunDeleteCallbackId {
BarkBattleRuntimeRunDeleteCallbackId(self.imp.on_delete(Box::new(callback)))
}
fn remove_on_delete(&self, callback: BarkBattleRuntimeRunDeleteCallbackId) {
self.imp.remove_on_delete(callback.0)
}
}
pub struct BarkBattleRuntimeRunUpdateCallbackId(__sdk::CallbackId);
impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattleRuntimeRunTableHandle<'ctx> {
@@ -97,6 +151,21 @@ impl<'ctx> __sdk::TableWithPrimaryKey for BarkBattleRuntimeRunTableHandle<'ctx>
}
}
impl<'ctx> __sdk::WithUpdate for BarkBattleRuntimeRunTableHandle<'ctx> {
type UpdateCallbackId = BarkBattleRuntimeRunUpdateCallbackId;
fn on_update(
&self,
callback: impl FnMut(&Self::EventContext, &Self::Row, &Self::Row) + Send + 'static,
) -> BarkBattleRuntimeRunUpdateCallbackId {
BarkBattleRuntimeRunUpdateCallbackId(self.imp.on_update(Box::new(callback)))
}
fn remove_on_update(&self, callback: BarkBattleRuntimeRunUpdateCallbackId) {
self.imp.remove_on_update(callback.0)
}
}
/// Access to the `run_id` unique index on the table `bark_battle_runtime_run`,
/// which allows point queries on the field of the same name
/// via the [`BarkBattleRuntimeRunRunIdUnique::find`] method.

Some files were not shown because too many files have changed in this diff Show More