# Account Handler Documentation ## Overview This document describes the database relationships and interactions for the `dbAccountHandler` class. The account handler manages user authentication and account-related data in the Magicbane emulator system. ## Handler Class **File:** `src/engine/db/handlers/dbAccountHandler.java` **Class:** `dbAccountHandler` **Extends:** `dbHandlerBase` ## Database Tables ### Main Account Table - **Table Name:** `obj_account` - **Description:** Core account information including login credentials, status, and account details - **Columns:** - UID (Primary Key) - username - password - email - accountStatus - lastLogin - creationDate - isBanned - banReason - isDeleted - deletedDate ### Related Tables | Table Name | Description | Relationship | |------------|-------------|--------------| | `obj_account_wipe` | Account wipe history records | AccountID → obj_account.UID | | `dyn_login_history` | Login attempt and session history | AccountID → obj_account.UID | ## Key Queries ### Get Account by ID ```sql SELECT * FROM `obj_account` WHERE `UID`=? ``` **File:** `dbAccountHandler.java`, Line ~60 ### Get Account by Username ```sql SELECT * FROM `obj_account` WHERE `username`=? ``` **File:** `dbAccountHandler.java`, Line ~85 ### Create New Account ```sql INSERT INTO `obj_account` (`username`, `password`, `email`, `accountStatus`, `creationDate`) VALUES (?, ?, ?, ?, ?) ``` **File:** `dbAccountHandler.java`, Line ~105 ### Update Account Status ```sql UPDATE `obj_account` SET `accountStatus`=?, `lastLogin`=? WHERE `UID`=? ``` **File:** `dbAccountHandler.java`, Line ~132 ### Check Username Availability ```sql SELECT `username` FROM `obj_account` WHERE `username`=? ``` **File:** `dbAccountHandler.java`, Line ~158 ## Relationships 1. **Account to Character:** One-to-many (via `obj_character.accountID` field) 2. **Account to Account Wipe History:** One-to-many (via `obj_account_wipe.AccountID`) 3. **Account to Login History:** One-to-many (via `dyn_login_history.AccountID`) ## Java Field to Database Column Mappings | Java Field | Database Column | Notes | |------------|-----------------|-------| | `username` | `obj_account.username` | Unique account username | | `password` | `obj_account.password` | Encrypted password | | `email` | `obj_account.email` | Account email address | | `accountStatus` | `obj_account.accountStatus` | Current account status | | `lastLogin` | `obj_account.lastLogin` | Timestamp of last login | | `creationDate` | `obj_account.creationDate` | Account creation date | | `isBanned` | `obj_account.isBanned` | Boolean flag for banned status | | `banReason` | `obj_account.banReason` | Reason for ban | | `isDeleted` | `obj_account.isDeleted` | Boolean flag for deleted status | | `deletedDate` | `obj_account.deletedDate` | Timestamp of deletion |