# 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 |