5.4 KiB
5.4 KiB
Database Schema
This document outlines the database schema for the Aurora project. The database is PostgreSQL, managed via Drizzle ORM.
Tables
Users (users)
Stores user data, economy, and progression.
| Column | Type | Description |
|---|---|---|
id |
bigint |
Primary Key. Discord User ID. |
class_id |
bigint |
Foreign Key -> classes.id. |
username |
varchar(255) |
User's Discord username. |
is_active |
boolean |
Whether the user is active (default: true). |
balance |
bigint |
User's currency balance. |
xp |
bigint |
User's experience points. |
level |
integer |
User's level. |
daily_streak |
integer |
Current streak of daily command usage. |
settings |
jsonb |
User-specific settings. |
created_at |
timestamp |
Record creation time. |
updated_at |
timestamp |
Last update time. |
Classes (classes)
Available character classes.
| Column | Type | Description |
|---|---|---|
id |
bigint |
Primary Key. Custom ID. |
name |
varchar(255) |
Class name (Unique). |
balance |
bigint |
Class bank balance (shared/flavor). |
role_id |
varchar(255) |
Discord Role ID associated with the class. |
Items (items)
Definitions of items available in the game.
| Column | Type | Description |
|---|---|---|
id |
serial |
Primary Key. Auto-incrementing ID. |
name |
varchar(255) |
Item name (Unique). |
description |
text |
Item description. |
rarity |
varchar(20) |
Common, Rare, etc. Default: 'Common'. |
type |
varchar(50) |
MATERIAL, CONSUMABLE, EQUIPMENT, etc. |
usage_data |
jsonb |
Effect data for consumables/usables. |
price |
bigint |
Base value of the item. |
icon_url |
text |
URL for the item's icon. |
image_url |
text |
URL for the item's large image. |
Inventory (inventory)
Items held by users.
| Column | Type | Description |
|---|---|---|
user_id |
bigint |
PK/FK -> users.id. |
item_id |
integer |
PK/FK -> items.id. |
quantity |
bigint |
Amount held. Must be > 0. |
Transactions (transactions)
Currency transaction history.
| Column | Type | Description |
|---|---|---|
id |
bigserial |
Primary Key. |
user_id |
bigint |
FK -> users.id. The user affecting the balance. |
related_user_id |
bigint |
FK -> users.id. The other party (if any). |
amount |
bigint |
Amount transferred. |
type |
varchar(50) |
Transaction type identifier. |
description |
text |
Human-readable description. |
created_at |
timestamp |
Time of transaction. |
Item Transactions (item_transactions)
Item flow history.
| Column | Type | Description |
|---|---|---|
id |
bigserial |
Primary Key. |
user_id |
bigint |
FK -> users.id. |
related_user_id |
bigint |
FK -> users.id. |
item_id |
integer |
FK -> items.id. |
quantity |
bigint |
Amount gained (+) or lost (-). |
type |
varchar(50) |
TRADE, SHOP_BUY, DROP, etc. |
description |
text |
Description. |
created_at |
timestamp |
Time of transaction. |
Quests (quests)
Quest definitions.
| Column | Type | Description |
|---|---|---|
id |
serial |
Primary Key. |
name |
varchar(255) |
Quest title. |
description |
text |
Quest text. |
trigger_event |
varchar(50) |
Event that triggers progress checks. |
requirements |
jsonb |
Completion criteria. |
rewards |
jsonb |
Rewards for completion. |
User Quests (user_quests)
User progress on quests.
| Column | Type | Description |
|---|---|---|
user_id |
bigint |
PK/FK -> users.id. |
quest_id |
integer |
PK/FK -> quests.id. |
progress |
integer |
Current progress value. |
completed_at |
timestamp |
Completion time (null if active). |
User Timers (user_timers)
Generic timers for cooldowns, temporary effects, etc.
| Column | Type | Description |
|---|---|---|
user_id |
bigint |
PK/FK -> users.id. |
type |
varchar(50) |
PK. Timer type (COOLDOWN, EFFECT, ACCESS). |
key |
varchar(100) |
PK. specific ID (e.g. 'daily'). |
expires_at |
timestamp |
When the timer expires. |
metadata |
jsonb |
Extra data. |
Lootdrops (lootdrops)
Active chat loot drop events.
| Column | Type | Description |
|---|---|---|
message_id |
varchar(255) |
Primary Key. Discord Message ID. |
channel_id |
varchar(255) |
Discord Channel ID. |
reward_amount |
integer |
Currency amount. |
currency |
varchar(50) |
Currency type constant. |
claimed_by |
bigint |
FK -> users.id. Null if unclaimed. |
created_at |
timestamp |
Spawn time. |
expires_at |
timestamp |
Despawn time. |
Moderation Cases (moderation_cases)
History of moderation actions.
| Column | Type | Description |
|---|---|---|
id |
bigserial |
Primary Key. |
case_id |
varchar(50) |
Unique friendly ID. |
type |
varchar(20) |
warn, timeout, kick, ban, etc. |
user_id |
bigint |
Target user ID. |
username |
varchar(255) |
Target username snapshot. |
moderator_id |
bigint |
Acting moderator ID. |
moderator_name |
varchar(255) |
Moderator username snapshot. |
reason |
text |
Reason for action. |
metadata |
jsonb |
Extra data. |
active |
boolean |
Is this case active? |
created_at |
timestamp |
Creation time. |
resolved_at |
timestamp |
Resolution/Expiration time. |
resolved_by |
bigint |
User ID who resolved it. |
resolved_reason |
text |
Reason for resolution. |