The server's seven databases: their names, who owns each, the rules for adding to them, and every table in each. Which process reads which database is on Server architecture processes and projects.
The databases
Names and owners
Database
Aspire name
Name in the example configs
Owned by
Shared between servers
Auth
authdb
nexus_forever_auth
STS, auth and world servers, both APIs
Yes
Character
characterdb
nexus_forever_character
World server, character API
No: one per realm
World
worlddb
nexus_forever_world
World server
Yes
Chat
chatdb
nexus_forever_chat
Chat server
Group
groupdb
nexus_forever_group
Group server
Friendship
friendshipdb
nexus_forever_friendship
Friendship server
Query
querydb
nexus_forever_query
Character server
Under the Aspire host all seven live in one MySQL container, in the mysql-data volume.
Rules
From upstream's database style, plus the conventions its existing tables follow:
Rule
Detail
Account data goes in auth
Anything that belongs to the account rather than one character. Several servers may share it
Character and realm data goes in character
One character database per realm, used by one world server
Static data goes in world
Content that doesn't change in play. Several servers may share it
Tables are snake_case
character_archive_article
Columns are lowerCamel
unlockedFlags
Primary keys are named PRIMARY
Usually composite where a row belongs to a character: the character id plus the row's own id
Foreign keys are named FK__<table>_<column>__<parent>_<column>
FK__character_archive_article_id__character_id
Schema changes are EF Core code-first migrations
One migration per change, in the database's own project