Some checks failed
Deploy to Production / test (push) Failing after 33s
- Rewrite AGENTS and README files to match the current app layout - Document API routes, trivia UI, and the active panel design language
2.0 KiB
2.0 KiB
Database layer
Aurora uses Drizzle ORM with PostgreSQL. Docker Compose currently runs PostgreSQL 17.
Schema modules
users.tsinventory.tseconomy.tsquests.tsmoderation.tsfeature-flags.tsguild-settings.tsgame-settings.ts
shared/db/schema/index.ts re-exports the full schema surface.
Numeric conventions
- Discord IDs, balances, XP, quantities, and transaction amounts are stored as
bigint - many API responses serialize those
bigintvalues to strings - JSON config blobs inside
game_settingsuse strings for values that becomebigintat runtime, for example:economy.daily.amounteconomy.daily.streakBonuseconomy.daily.weeklyBonuseconomy.transfers.minAmountinventory.maxStackSizetrivia.entryFee
Important tables
usersclassestransactionsitem_transactionsitemsinventoryquestsuser_questsuser_timersmoderation_caseslootdropsfeature_flagsfeature_flag_accessguild_settingsgame_settings
Composite keys and constraints
inventory(userId, itemId)userQuests(userId, questId)userTimers(userId, type, key)inventory.quantity > 0items.nameis uniquefeature_flags.nameis unique
JSON columns
items.usageDatausers.settingsuserTimers.metadataquests.requirementsquests.rewardsguildSettings.colorRoleIdsguildSettings.featureOverrides- every main section in
gameSettings
Relations and deletion behavior
- inventory rows cascade on user/item deletion
transactions.relatedUserIdanditem_transactions.relatedUserIduseset null- feature flag access rows cascade when a feature flag is deleted
- moderation cases are not soft-deleted; lifecycle is represented by
active,resolvedAt, andresolvedBy
Client setup
shared/db/DrizzleClient.tsexports the singleton DB clientbot/lib/db.tsexportswithTransaction()- shared services normally accept an optional existing transaction so nested operations stay atomic