Skip to content

Commit 36198b6

Browse files
committed
updated
1 parent 24d0468 commit 36198b6

7 files changed

Lines changed: 60 additions & 24 deletions

File tree

src/adapters/grpc_api/auth_user_api.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::application::use_cases::login_user::LoginUserUseCase;
1+
use crate::application::use_cases::login_user_use_case::LoginUserUseCase;
22
use crate::infra::grpc::auth_user::{auth_server::Auth, LoginRequest, LoginResponse};
33
use tonic::{Request, Response, Status};
44

src/adapters/grpc_api/misc_api.rs

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,54 @@
11
#[cfg(feature = "ssr")]
22
use tonic::{Request, Response, Status};
33

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+
};
610

711

12+
#[derive(Clone)]
13+
pub struct MiscGrpcApi {
14+
pub misc_use_case: MiscUseCase,
15+
}
816

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+
}
1223
}
1324

25+
26+
1427
#[tonic::async_trait]
15-
impl Misc for MyMisc {
28+
impl Misc for MiscGrpcApi {
1629
async fn health_check(
1730
&self,
1831
request: Request<HealthCheckRequest>,
1932
) -> Result<Response<HealthCheckResponse>, Status> {
2033
println!("Got a request: {:?}", request);
2134

22-
let request = HealthCheckResponse {
23-
status: true,
24-
};
35+
let request = HealthCheckResponse { status: true };
2536

2637
Ok(Response::new(request))
2738
}
2839

29-
async fn setup (
40+
async fn setup(
3041
&self,
3142
request: Request<SetupRequest>,
3243
) -> Result<Response<SetupResponse>, Status> {
3344
println!("Got a setup request: {:?}", request);
3445

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())),
3750
};
51+
let request = SetupResponse { status: setup_result };
3852

3953
Ok(Response::new(request))
4054
}
File renamed without changes.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use std::sync::Arc;
2+
use crate::error::Result;
3+
use crate::infra::repositories::misc_repository::MiscRepository;
4+
5+
#[derive(Clone)]
6+
pub struct MiscUseCase {
7+
pub misc_repository: Arc<dyn MiscRepository>,
8+
}
9+
10+
impl MiscUseCase {
11+
pub fn new(misc_repository: Arc<dyn MiscRepository>) -> Self {
12+
Self { misc_repository }
13+
}
14+
15+
pub async fn setup(&self) -> Result<bool> {
16+
self.misc_repository.setup().await
17+
}
18+
}

src/application/use_cases/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
pub mod login_user;
1+
pub mod login_user_use_case;
2+
pub mod misc_use_case;

src/infra/app.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,16 @@ pub async fn create_app(state: AppState) -> crate::error::Result<Router> {
2727
let my_hello_service =
2828
crate::infra::grpc::helloworld::greeter_server::GreeterServer::new(my_hello_server);
2929

30-
let my_misc_server = crate::adapters::grpc_api::misc_api::MyMisc::default();
31-
let my_misc_service = crate::infra::grpc::misc::misc_server::MiscServer::new(my_misc_server);
32-
30+
3331
let db = init_database().await?;
3432
let surreal_repository = Arc::new(SurrealUserRepository::new(db));
33+
34+
35+
let misc_use_case =
36+
crate::application::use_cases::misc_use_case::MiscUseCase::new(surreal_repository.clone());
3537

36-
38+
let misc_grpc_api = crate::adapters::grpc_api::misc_api::MiscGrpcApi::new(misc_use_case);
39+
let misc_service = crate::infra::grpc::misc::misc_server::MiscServer::new(misc_grpc_api);
3740

3841
// pub fn new(file_repository: Arc<dyn FileRepository>) -> Self {
3942
// Self { file_repository }
@@ -52,7 +55,7 @@ pub async fn create_app(state: AppState) -> crate::error::Result<Router> {
5255
// );
5356

5457
let login_user_use_case =
55-
crate::application::use_cases::login_user::LoginUserUseCase::new(surreal_repository.clone());
58+
crate::application::use_cases::login_user_use_case::LoginUserUseCase::new(surreal_repository.clone());
5659

5760
let auth_user_server =
5861
crate::adapters::grpc_api::auth_user_api::AuthUserGrpcApi::new(login_user_use_case);
@@ -62,8 +65,8 @@ pub async fn create_app(state: AppState) -> crate::error::Result<Router> {
6265

6366
let router = Router::<AppState>::new()
6467
.route_service("/helloworld.Greeter/SayHello", my_hello_service)
65-
.route_service("/misc.Misc/HealthCheck", my_misc_service.clone())
66-
.route_service("/misc.Misc/Setup", my_misc_service)
68+
.route_service("/misc.Misc/HealthCheck", misc_service.clone())
69+
.route_service("/misc.Misc/Setup", misc_service)
6770
.route_service("/auth_user.Auth/LoginUser", auth_user_service)
6871
.leptos_routes_with_context(
6972
&state,

src/infra/repositories/misc_repository.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ use async_trait::async_trait;
44

55
#[async_trait]
66
pub trait MiscRepository: Send + Sync {
7-
async fn setup(&self) -> Result<()>;
7+
async fn setup(&self) -> Result<bool>;
88
}
99

1010

1111
#[async_trait]
1212
impl MiscRepository for SurrealUserRepository {
13-
async fn setup(&self) -> Result<()>
13+
async fn setup(&self) -> Result<bool>
1414
{
1515
println!("Setting up database");
16-
Ok(())
16+
Ok(false)
1717
}
1818
}

0 commit comments

Comments
 (0)