diff options
Diffstat (limited to 'crates/profile-service/src/server')
-rw-r--r-- | crates/profile-service/src/server/interceptor.rs | 11 | ||||
-rw-r--r-- | crates/profile-service/src/server/manager.rs | 45 |
2 files changed, 56 insertions, 0 deletions
diff --git a/crates/profile-service/src/server/interceptor.rs b/crates/profile-service/src/server/interceptor.rs new file mode 100644 index 0000000..6fbe7fa --- /dev/null +++ b/crates/profile-service/src/server/interceptor.rs @@ -0,0 +1,11 @@ +use tonic::{Status, service::Interceptor}; +use tracing::Span; + +#[derive(Clone, Copy)] +pub struct MyInterceptor; + +impl Interceptor for MyInterceptor { + fn call(&mut self, request: tonic::Request<()>) -> Result<tonic::Request<()>, Status> { + Ok(request) + } +} 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!() + } +} |