|
1 | 1 | #[cfg(feature = "ssr")] |
2 | 2 | use tonic::{Request, Response, Status}; |
3 | 3 |
|
4 | | -use crate::infra::grpc::misc::{HealthCheckRequest, HealthCheckResponse, SetupRequest, SetupResponse, misc_server::Misc}; |
5 | | - |
| 4 | +use crate::{ |
| 5 | + application::use_cases::misc_use_case::MiscUseCase, |
| 6 | + infra::grpc::misc::{ |
| 7 | + misc_server::Misc, HealthCheckRequest, HealthCheckResponse, SetupRequest, SetupResponse, |
| 8 | + }, |
| 9 | +}; |
6 | 10 |
|
7 | 11 |
|
| 12 | +#[derive(Clone)] |
| 13 | +pub struct MiscGrpcApi { |
| 14 | + pub misc_use_case: MiscUseCase, |
| 15 | +} |
8 | 16 |
|
9 | | -#[derive(Debug, Default)] |
10 | | -pub struct MyMisc { |
11 | | - |
| 17 | +impl MiscGrpcApi { |
| 18 | + pub fn new(misc_use_case: MiscUseCase) -> Self { |
| 19 | + Self { |
| 20 | + misc_use_case, |
| 21 | + } |
| 22 | + } |
12 | 23 | } |
13 | 24 |
|
| 25 | + |
| 26 | + |
14 | 27 | #[tonic::async_trait] |
15 | | -impl Misc for MyMisc { |
| 28 | +impl Misc for MiscGrpcApi { |
16 | 29 | async fn health_check( |
17 | 30 | &self, |
18 | 31 | request: Request<HealthCheckRequest>, |
19 | 32 | ) -> Result<Response<HealthCheckResponse>, Status> { |
20 | 33 | println!("Got a request: {:?}", request); |
21 | 34 |
|
22 | | - let request = HealthCheckResponse { |
23 | | - status: true, |
24 | | - }; |
| 35 | + let request = HealthCheckResponse { status: true }; |
25 | 36 |
|
26 | 37 | Ok(Response::new(request)) |
27 | 38 | } |
28 | 39 |
|
29 | | - async fn setup ( |
| 40 | + async fn setup( |
30 | 41 | &self, |
31 | 42 | request: Request<SetupRequest>, |
32 | 43 | ) -> Result<Response<SetupResponse>, Status> { |
33 | 44 | println!("Got a setup request: {:?}", request); |
34 | 45 |
|
35 | | - let request = SetupResponse { |
36 | | - status: true, |
| 46 | + // Think of implementing a generic result handler |
| 47 | + let setup_result = match self.misc_use_case.setup().await { |
| 48 | + Ok(result) => result, |
| 49 | + Err(e) => return Err(Status::internal(e.to_string())), |
37 | 50 | }; |
| 51 | + let request = SetupResponse { status: setup_result }; |
38 | 52 |
|
39 | 53 | Ok(Response::new(request)) |
40 | 54 | } |
|
0 commit comments