Added SaveCharacter and UpdateSession function stubs

Updated proto message type names to better match usage
Fixed compile errors due to type name changes
This commit is contained in:
2025-07-22 00:17:32 -04:00
parent 2d423b0ad3
commit a20a44fd29
13 changed files with 110 additions and 73 deletions

View File

@@ -5,6 +5,7 @@ fn main() {
.type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]")
.compile_protos(
&[
"../proto/character_common.proto",
"../proto/user_db_api.proto",
"../proto/character_db_api.proto",
"../proto/session_db_api.proto",

View File

@@ -1,14 +1,12 @@
use crate::grpc::character_db_service_server::CharacterDbService;
use crate::grpc::database_service::MyDatabaseService;
use crate::grpc::{
Character, CharacterListRequest, CharacterListResponse, CharacterRequest, CreateCharacterRequest,
CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse,
};
// use crate::character_common::{Character};
use crate::grpc::{CharacterItem, CharacterListRequest, CharacterListResponse, CharacterRequest, CreateCharacterRequest, CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse, SaveCharacterRequest, SaveCharacterResponse};
use tonic::{Request, Response, Status};
#[tonic::async_trait]
impl CharacterDbService for MyDatabaseService {
async fn get_character(&self, request: Request<CharacterRequest>) -> Result<Response<Character>, Status> {
async fn get_character(&self, request: Request<CharacterRequest>) -> Result<Response<CharacterItem>, Status> {
let req = request.into_inner();
let repo = &self.db.character_repo;
@@ -22,7 +20,7 @@ impl CharacterDbService for MyDatabaseService {
deleted_at = character.deleted_at.unwrap().to_string();
}
let response = Character {
let response = CharacterItem {
id: character.id,
user_id: character.user_id,
name: character.name,
@@ -53,14 +51,14 @@ impl CharacterDbService for MyDatabaseService {
.await
.map_err(|_| Status::not_found("Character not found"))?;
let mut character_list: Vec<Character> = Vec::new();
let mut character_list: Vec<CharacterItem> = Vec::new();
for character in characters {
let mut deleted_at = "".to_string();
if character.deleted_at.is_some() {
deleted_at = character.deleted_at.unwrap_or_default().to_string();
}
let character = Character {
let character = CharacterItem {
id: character.id,
user_id: character.user_id,
name: character.name,
@@ -138,4 +136,8 @@ impl CharacterDbService for MyDatabaseService {
};
Ok(Response::new(response))
}
async fn save_character(&self, request: Request<SaveCharacterRequest>) -> Result<Response<SaveCharacterResponse>, Status> {
todo!()
}
}

View File

@@ -1,6 +1,6 @@
use crate::grpc::database_service::MyDatabaseService;
use crate::grpc::session_service_server::SessionService;
use crate::grpc::{GetSessionRequest, GetSessionResponse, RefreshSessionRequest, RefreshSessionResponse};
use crate::grpc::{GetSessionRequest, GetSessionResponse, RefreshSessionRequest, RefreshSessionResponse, UpdateSessionRequest, UpdateSessionResponse};
use tonic::{Request, Response, Status};
use tracing::debug;
@@ -43,4 +43,8 @@ impl SessionService for MyDatabaseService {
debug!("session: {:?}", session);
Ok(Response::new(RefreshSessionResponse { valid }))
}
async fn update_session(&self, request: Request<UpdateSessionRequest>) -> Result<Response<UpdateSessionResponse>, Status> {
todo!()
}
}

View File

@@ -1,5 +0,0 @@
pub mod characters;
pub mod db;
pub mod grpc;
pub mod sessions;
pub mod users;

View File

@@ -1,8 +1,15 @@
use database_service::db::Database;
use database_service::grpc::character_db_service_server::CharacterDbServiceServer;
use database_service::grpc::database_service::MyDatabaseService;
use database_service::grpc::session_service_server::SessionServiceServer;
use database_service::grpc::user_service_server::UserServiceServer;
pub mod characters;
pub mod db;
pub mod grpc;
pub mod sessions;
pub mod users;
use crate::db::Database;
use crate::grpc::character_db_service_server::CharacterDbServiceServer;
use crate::grpc::database_service::MyDatabaseService;
use crate::grpc::session_service_server::SessionServiceServer;
use crate::grpc::user_service_server::UserServiceServer;
use dotenv::dotenv;
use sqlx::postgres::PgPoolOptions;
use std::env;
@@ -17,6 +24,10 @@ use tracing_subscriber::EnvFilter;
use utils::logging;
use utils::redis_cache::RedisCache;
pub mod character_common {
tonic::include_proto!("character_common");
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenv().ok();