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

@@ -14,6 +14,7 @@ fn main() {
tonic_build::configure()
.build_server(false) // Generate gRPC client code
.compile_well_known_types(true)
.type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]")
.compile_protos(
&["../proto/character_db_api.proto", "../proto/auth.proto"],
&["../proto"],

View File

@@ -1,11 +1,11 @@
use crate::database::{
character_db_service_client::CharacterDbServiceClient, Character, CharacterListRequest, CharacterListResponse,
character_db_service_client::CharacterDbServiceClient, CharacterItem, CharacterListRequest, CharacterListResponse,
CharacterRequest, CreateCharacterRequest, CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse,
};
use serde::{Deserialize, Serialize};
use tonic::transport::Channel;
use crate::character_service::character_common::{Item, ItemHeader};
use crate::character_common::{Item, ItemHeader};
#[derive(Clone)]
pub struct CharacterDbClient {
@@ -17,21 +17,6 @@ struct Skill {
id: i32,
}
// #[derive(Debug, Deserialize, Serialize)]
// struct Item {
// item_id: i32,
// item_type: i32,
// is_created: i32,
// gem_option: i32,
// durability: f32,
// life: f32,
// socket: i8,
// is_appraised: i8,
// grade: u32,
// count: i32,
// slot: i32,
// }
#[derive(Debug, Deserialize, Serialize)]
struct Looks {
race: i32,
@@ -84,7 +69,7 @@ impl CharacterDbClient {
&mut self,
user_id: &str,
char_id: &str,
) -> Result<Character, Box<dyn std::error::Error>> {
) -> Result<CharacterItem, Box<dyn std::error::Error>> {
let request = tonic::Request::new(CharacterRequest {
user_id: user_id.parse().unwrap(),
character_id: char_id.parse().unwrap(),

View File

@@ -1,21 +1,11 @@
use crate::character_db_client::CharacterDbClient;
use crate::character_service::character::character_service_server::CharacterService;
use crate::character_service::character::{
CreateCharacterRequest, CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse,
GetCharacterListRequest, GetCharacterListResponse, GetCharacterRequest, GetCharacterResponse,
};
use crate::character_service::character_common::{Character, CharacterFull};
use crate::character::character_service_server::CharacterService;
use crate::character::{CreateCharacterRequest, CreateCharacterResponse, DeleteCharacterRequest, DeleteCharacterResponse, GetCharacterListRequest, GetCharacterListResponse, GetCharacterRequest, GetCharacterResponse, SaveCharacterRequest, SaveCharacterResponse};
use crate::character_common::{Character, CharacterFull, EquippedItem, Item, ItemHeader};
use std::sync::Arc;
use tonic::{Request, Response, Status};
use tracing::debug;
pub mod character_common {
tonic::include_proto!("character_common");
}
pub mod character {
tonic::include_proto!("character");
}
pub struct MyCharacterService {
pub character_db_client: Arc<CharacterDbClient>,
}
@@ -42,11 +32,11 @@ impl CharacterService for MyCharacterService {
let mut characters: Vec<Character> = vec![];
for character in character_list.characters {
let mut equipped_items: Vec<character_common::EquippedItem> = vec![];
let inventory: Vec<character_common::Item> = serde_json::from_str(&character.inventory).unwrap();
let mut equipped_items: Vec<EquippedItem> = vec![];
let inventory: Vec<Item> = serde_json::from_str(&character.inventory).unwrap();
for item in inventory {
if item.slot < 12 {
equipped_items.push(character_common::EquippedItem {
equipped_items.push(EquippedItem {
item_id: item.header.unwrap().id,
socket: item.socket,
grade: item.grade,
@@ -142,4 +132,8 @@ impl CharacterService for MyCharacterService {
};
Ok(Response::new(response))
}
async fn save_character(&self, request: Request<SaveCharacterRequest>) -> Result<Response<SaveCharacterResponse>, Status> {
todo!()
}
}

View File

@@ -1,3 +0,0 @@
pub mod character_db_client;
pub mod character_service;
pub mod database;

View File

@@ -4,8 +4,20 @@ pub mod database {
tonic::include_proto!("character_db_api");
}
pub mod common {
tonic::include_proto!("common");
}
pub mod character {
tonic::include_proto!("character");
}
pub mod character_common {
tonic::include_proto!("character_common");
}
use crate::character_db_client::CharacterDbClient;
use crate::character_service::character::character_service_server::CharacterServiceServer;
use crate::character::character_service_server::CharacterServiceServer;
use crate::character_service::MyCharacterService;
use dotenv::dotenv;
use std::env;