diff --git a/apps/backend/src/models/user.cairo b/apps/backend/src/models/user.cairo index 4ad70ac..8aad80b 100644 --- a/apps/backend/src/models/user.cairo +++ b/apps/backend/src/models/user.cairo @@ -2,6 +2,17 @@ use starknet::ContractAddress; use core::num::traits::zero::Zero; + +// Event definition for user creation +#[derive(Copy, Drop, Serde)] +#[dojo::event] +pub struct UserCreated { + #[key] + pub user_id: ContractAddress, + pub address: ContractAddress, + pub timestamp: u64, +} + // Model #[derive(Copy, Drop, Serde, IntrospectPacked, Debug)] #[dojo::model] diff --git a/apps/backend/src/systems/users.cairo b/apps/backend/src/systems/users.cairo index 4ffe6b7..70fc9a5 100644 --- a/apps/backend/src/systems/users.cairo +++ b/apps/backend/src/systems/users.cairo @@ -3,7 +3,7 @@ use starknet::ContractAddress; use dojo::world::IWorldDispatcher; use dojo::world::WorldDispatcherTrait; use dojo::model::ModelTrait; -use crate::models::user::{User, UserTrait}; +use crate::models::user::{User, UserTrait, UserCreated}; #[dojo::system] pub struct Users; @@ -19,6 +19,13 @@ impl Users { ) { let user = User::new(address, creation_timestamp, 0, creation_timestamp, true); world.set::(user); + + // Emit UserCreated event + world.emit_event(@UserCreated { + user_id: address, + address: address, + timestamp: creation_timestamp, + }); } #[dojo::action]