Skip to content

Commit 25f6e0b

Browse files
committed
fix: resolve WIT binding namespace issues and add missing dependencies
- Update user_service.rs imports to match actual wit-bindgen output structure - Add serde_json and uuid dependencies to @crates repository - Fix WIT binding implementation to use correct Guest trait structure - Resolve self-referential method call in get_service_stats
1 parent 7e6317f commit 25f6e0b

File tree

5 files changed

+515
-210
lines changed

5 files changed

+515
-210
lines changed

MODULE.bazel.lock

Lines changed: 445 additions & 205 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/cpp_component/multi_component_system/BUILD.bazel

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ rust_wasm_component_bindgen(
4343
srcs = ["components/user_service.rs"],
4444
visibility = ["//visibility:public"],
4545
wit = ":user_service_wit",
46+
deps = [
47+
"@crates//:serde_json",
48+
"@crates//:serde",
49+
"@crates//:uuid",
50+
],
4651
)
4752

4853
# Alias for auth service to match expected name

examples/cpp_component/multi_component_system/components/user_service.rs

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ use std::collections::HashMap;
33
use uuid::Uuid;
44

55
// Use the generated bindings from rust_wasm_component_bindgen
6-
use user_service_bindings::exports::example::user_service::user_service::Guest;
6+
use user_service_bindings::exports::user_service::Guest;
77

88
// Re-export the generated WIT types
9-
pub use user_service_bindings::exports::example::user_service::user_service::*;
9+
pub use user_service_bindings::exports::user_service::*;
1010

1111
/// Rust User Service Component
1212
///
@@ -369,10 +369,48 @@ impl UserServiceImpl {
369369
struct UserService;
370370

371371
impl Guest for UserService {
372-
type UserService = UserServiceImpl;
372+
fn create_user(&mut self, request: CreateUserRequest) -> UserResult {
373+
UserServiceImpl::get_instance().create_user(request)
374+
}
375+
376+
fn get_user(&mut self, user_id: String) -> UserResult {
377+
UserServiceImpl::get_instance().get_user(user_id)
378+
}
379+
380+
fn update_user(&mut self, user_id: String, request: ProfileUpdateRequest) -> bool {
381+
UserServiceImpl::get_instance().update_user(user_id, request)
382+
}
383+
384+
fn delete_user(&mut self, user_id: String) -> bool {
385+
UserServiceImpl::get_instance().delete_user(user_id)
386+
}
387+
388+
fn search_users(&mut self, query: SearchQuery) -> Vec<User> {
389+
UserServiceImpl::get_instance().search_users(query)
390+
}
391+
392+
fn add_friend(&mut self, user_id: String, friend_id: String) -> bool {
393+
UserServiceImpl::get_instance().add_friend(user_id, friend_id)
394+
}
395+
396+
fn remove_friend(&mut self, user_id: String, friend_id: String) -> bool {
397+
UserServiceImpl::get_instance().remove_friend(user_id, friend_id)
398+
}
399+
400+
fn get_friends(&mut self, user_id: String) -> Vec<String> {
401+
UserServiceImpl::get_instance().get_friends(user_id)
402+
}
403+
404+
fn health_check(&mut self) -> bool {
405+
UserServiceImpl::get_instance().health_check()
406+
}
407+
408+
fn get_service_stats(&mut self) -> String {
409+
UserServiceImpl::get_instance().get_service_stats()
410+
}
373411
}
374412

375-
impl GuestUserService for UserServiceImpl {
413+
impl UserServiceImpl {
376414
fn create_user(&mut self, request: CreateUserRequest) -> UserResult {
377415
match self.create_user_profile(&request) {
378416
Ok(profile) => UserResult::Success(User {
@@ -480,7 +518,16 @@ impl GuestUserService for UserServiceImpl {
480518
}
481519

482520
fn get_service_stats(&mut self) -> String {
483-
let stats = self.get_service_stats();
521+
let stats = ServiceMetrics {
522+
total_users: self.users.len() as u64,
523+
active_sessions: self.user_sessions.values().map(|s| s.len() as u64).sum(),
524+
profile_updates: self.metrics.profile_updates,
525+
relationship_operations: self.metrics.relationship_operations,
526+
cache_hits: self.metrics.cache_hits,
527+
cache_misses: self.metrics.cache_misses,
528+
async_operations: self.metrics.async_operations,
529+
zero_copy_operations: self.metrics.zero_copy_operations,
530+
};
484531
// Safe JSON serialization using serde
485532
serde_json::to_string(&stats).unwrap_or_else(|_| "{}".to_string())
486533
}

tools/checksum_updater/Cargo.lock

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/checksum_updater/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ tempfile = "3.0"
2929
async-trait = "0.1"
3030
wstd = "0.5.3" # WebAssembly standard library for WASI Preview 2
3131
wit-bindgen = "0.43.0" # WIT binding generation for macro usage
32+
uuid = { version = "1.0", features = ["v4"] } # UUID generation for user service
3233

3334
[dev-dependencies]
3435
tokio-test = "0.4"

0 commit comments

Comments
 (0)