diff options
author | rtkay123 <dev@kanjala.com> | 2025-07-26 19:24:38 +0200 |
---|---|---|
committer | rtkay123 <dev@kanjala.com> | 2025-07-26 19:24:38 +0200 |
commit | e26d87f4fa18999c6bcfbcf32cfa85adab11acdd (patch) | |
tree | 603c6dacb6c448984bdcc5fa2b4a9314f1a23960 /crates/profile-service/src/server/manager.rs | |
parent | 236876f1d0539ac22a3977fd8599933725ad0f90 (diff) | |
download | sellershut-e26d87f4fa18999c6bcfbcf32cfa85adab11acdd.tar.bz2 sellershut-e26d87f4fa18999c6bcfbcf32cfa85adab11acdd.zip |
feat(auth): create user call
Diffstat (limited to 'crates/profile-service/src/server/manager.rs')
-rw-r--r-- | crates/profile-service/src/server/manager.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/crates/profile-service/src/server/manager.rs b/crates/profile-service/src/server/manager.rs new file mode 100644 index 0000000..bd7e149 --- /dev/null +++ b/crates/profile-service/src/server/manager.rs @@ -0,0 +1,45 @@ +use prost::Message; +use sellershut_core::profile::{ + CompleteUserRequest, CreateUserRequest, CreateUserResponse, User, profile_server::Profile, +}; +use stack_up::redis::AsyncCommands; +use tonic::{Request, Response, Status, async_trait}; +use tracing::trace; +use uuid::Uuid; + +use crate::state::AppHandle; + +#[async_trait] +impl Profile for AppHandle { + #[doc = " Create a new user profile"] + async fn create_user( + &self, + request: Request<CreateUserRequest>, + ) -> Result<Response<CreateUserResponse>, Status> { + trace!("creating user"); + let data = request.into_inner(); + let id = Uuid::now_v7().to_string(); + + let bytes = data.encode_to_vec(); + let mut cache = self + .services + .cache + .get() + .await + .map_err(|e| Status::internal("storage not ready"))?; + cache + .set_ex::<_, _, ()>(&id, &bytes, self.local_config.temp_ttl) + .await + .map_err(|e| Status::internal("storage not ready"))?; + + Ok(Response::new(CreateUserResponse { temp_id: id })) + } + + #[doc = " Complete Profile"] + async fn complete_profile( + &self, + request: Request<CompleteUserRequest>, + ) -> Result<Response<User>, Status> { + todo!() + } +} |