78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
# dbCSSessionHandler Documentation
|
|||
|
|
|
||
|
|
## Overview
|
||
|
|
This document describes the database relationships and interactions for the `dbCSSessionHandler` class. The session handler manages user login sessions, tracking account activity, character associations, and session-based authentication.
|
||
|
|
|
||
|
|
## Handler Class
|
||
|
|
**File:** `src/engine/db/handlers/dbCSSessionHandler.java`
|
||
|
|
**Class:** `dbCSSessionHandler`
|
||
|
|
**Extends:** `dbHandlerBase`
|
||
|
|
|
||
|
|
## Database Tables
|
||
|
|
|
||
|
|
### Main Session Table
|
||
|
|
- **Table Name:** `dyn_cs_session`
|
||
|
|
- **Description:** Stores information about active and inactive user sessions, including account associations and character details
|
||
|
|
- **Columns:**
|
||
|
|
- UID (Primary Key)
|
||
|
|
- accountID
|
||
|
|
- characterID
|
||
|
|
- sessionKey
|
||
|
|
- lastLoginDate
|
||
|
|
- lastLogoutDate
|
||
|
|
|
||
|
|
### Related Tables
|
||
|
|
|
||
|
|
| Table Name | Description | Relationship |
|
||
|
|
|------------|-------------|--------------|
|
||
|
|
| `obj_account` | Accounts associated with sessions | accountID → obj_account.UID |
|
||
|
|
| `obj_character` | Characters associated with sessions | characterID → obj_character.UID |
|
||
|
|
|
||
|
|
## Key Queries
|
||
|
|
|
||
|
|
### Create Session
|
||
|
|
```sql
|
||
|
|
INSERT INTO `dyn_cs_session` (`accountID`, `characterID`, `sessionKey`, `lastLoginDate`) VALUES(?,?,?,?)
|
||
|
|
```
|
||
|
|
**File:** `dbCSSessionHandler.java`, Line ~35
|
||
|
|
|
||
|
|
### Load Session by Account
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `dyn_cs_session` WHERE `accountID` = ?
|
||
|
|
```
|
||
|
|
**File:** `dbCSSessionHandler.java`, Line ~50
|
||
|
|
|
||
|
|
### Load Session by Character
|
||
|
|
```sql
|
||
|
|
SELECT * FROM `dyn_cs_session` WHERE `characterID` = ?
|
||
|
|
```
|
||
|
|
**File:** `dbCSSessionHandler.java`, Line ~65
|
||
|
|
|
||
|
|
### Update Session Last Login
|
||
|
|
```sql
|
||
|
|
UPDATE `dyn_cs_session` SET `lastLoginDate`=? WHERE `UID`=?
|
||
|
|
```
|
||
|
|
**File:** `dbCSSessionHandler.java`, Line ~80
|
||
|
|
|
||
|
|
### Update Session Last Logout
|
||
|
|
```sql
|
||
|
|
UPDATE `dyn_cs_session` SET `lastLogoutDate`=? WHERE `UID`=?
|
||
|
|
```
|
||
|
|
**File:** `dbCSSessionHandler.java`, Line ~95
|
||
|
|
|
||
|
|
## Relationships
|
||
|
|
|
||
|
|
1. **Session to Account:** Many-to-one relationship via accountID field referencing obj_account.UID
|
||
|
|
2. **Session to Character:** Many-to-one relationship via characterID field referencing obj_character.UID
|
||
|
|
3. **Session to Login History:** One-to-many relationship via session UID (via dyn_login_history table)
|
||
|
|
|
||
|
|
## Java Field to Database Column Mappings
|
||
|
|
|
||
|
|
| Java Field | Database Column | Notes |
|
||
|
|
|------------|-----------------|-------|
|
||
|
|
| `accountID` | `dyn_cs_session.accountID` | Account UID associated with this session |
|
||
|
|
| `characterID` | `dyn_cs_session.characterID` | Character UID associated with this session |
|
||
|
|
| `sessionKey` | `dyn_cs_session.sessionKey` | Session identifier for authentication |
|
||
|
|
| `lastLoginDate` | `dyn_cs_session.lastLoginDate` | Timestamp of last login |
|
||
|
|
| `lastLogoutDate` | `dyn_cs_session.lastLogoutDate` | Timestamp of last logout |
|