Files
osirose-new/database-service/API.md
raven a8755bd3de Add comprehensive documentation and unit tests
Documentation:
- Add detailed README files for all services (auth, character, database, launcher, packet, utils, world)
- Create API documentation for the database service with detailed endpoint specifications
- Document database schema and relationships
- Add service architecture overviews and configuration instructions

Unit Tests:
- Implement comprehensive test suite for database repositories (user, character, session)
- Add gRPC service tests for database interactions
- Create tests for packet service components (bufferpool, connection, packets)
- Add utility service tests (health check, logging, load balancer, redis cache, service discovery)
- Implement auth service user tests
- Add character service tests

Code Structure:
- Reorganize test files into a more consistent structure
- Create a dedicated tests crate for integration testing
- Add test helpers and mock implementations for easier testing
2025-04-09 13:29:53 -04:00

230 lines
3.6 KiB
Markdown

# Database Service API Documentation
This document provides detailed information about the gRPC API endpoints exposed by the Database Service.
## UserService
### GetUser
Retrieves a user by their ID.
**Request:**
```protobuf
message GetUserRequest {
int32 user_id = 1;
}
```
**Response:**
```protobuf
message GetUserResponse {
int32 user_id = 1;
string username = 2;
string email = 3;
string role = 4;
}
```
**Error Codes:**
- `NOT_FOUND`: User with the specified ID does not exist
### GetUserByUsername
Retrieves a user by their username.
**Request:**
```protobuf
message GetUserByUsernameRequest {
string username = 1;
}
```
**Response:**
```protobuf
message GetUserResponse {
int32 user_id = 1;
string username = 2;
string email = 3;
string role = 4;
}
```
**Error Codes:**
- `NOT_FOUND`: User with the specified username does not exist
### GetUserByEmail
Retrieves a user by their email address.
**Request:**
```protobuf
message GetUserByEmailRequest {
string email = 1;
}
```
**Response:**
```protobuf
message GetUserResponse {
int32 user_id = 1;
string username = 2;
string email = 3;
string role = 4;
}
```
**Error Codes:**
- `NOT_FOUND`: User with the specified email does not exist
## CharacterDbService
### GetCharacter
Retrieves a character by ID.
**Request:**
```protobuf
message CharacterRequest {
string user_id = 1;
int32 character_id = 2;
}
```
**Response:**
```protobuf
message Character {
int32 id = 1;
string user_id = 2;
string name = 3;
int64 money = 4;
string inventory = 6;
string stats = 7;
string skills = 8;
string looks = 9;
string position = 10;
string created_at = 11;
string updated_at = 12;
string deleted_at = 13;
bool is_active = 14;
}
```
**Error Codes:**
- `NOT_FOUND`: Character with the specified ID does not exist
### GetCharacterList
Retrieves all characters for a user.
**Request:**
```protobuf
message CharacterListRequest {
string user_id = 1;
}
```
**Response:**
```protobuf
message CharacterListResponse {
repeated Character characters = 1;
}
```
### CreateCharacter
Creates a new character.
**Request:**
```protobuf
message CreateCharacterRequest {
string user_id = 1;
string name = 2;
string inventory = 3; // JSON serialized
string skills = 4; // JSON serialized
string stats = 5; // JSON serialized
string looks = 6; // JSON serialized
string position = 7; // JSON serialized
}
```
**Response:**
```protobuf
message CreateCharacterResponse {
int32 result = 1;
int32 character_id = 2;
}
```
**Error Codes:**
- `INTERNAL`: Failed to create character
### DeleteCharacter
Marks a character for deletion.
**Request:**
```protobuf
message DeleteCharacterRequest {
string user_id = 1;
int32 character_id = 2;
int32 delete_type = 3;
}
```
**Response:**
```protobuf
message DeleteCharacterResponse {
int64 remaining_time = 1;
string name = 2;
}
```
**Error Codes:**
- `INTERNAL`: Failed to delete character
## SessionService
### GetSession
Retrieves session information.
**Request:**
```protobuf
message GetSessionRequest {
string session_id = 1;
}
```
**Response:**
```protobuf
message GetSessionResponse {
string session_id = 1;
string user_id = 2;
}
```
**Error Codes:**
- `NOT_FOUND`: Session with the specified ID does not exist
### RefreshSession
Updates session expiration.
**Request:**
```protobuf
message RefreshSessionRequest {
string session_id = 1;
}
```
**Response:**
```protobuf
message RefreshSessionResponse {
string session_id = 1;
string user_id = 2;
}
```
**Error Codes:**
- `NOT_FOUND`: Session with the specified ID does not exist