Entity reference¶
Content entities, taxonomies, and junction entities the suite declares.
Content entities (catalog)¶
| Entity type ID | Class | Module | Freshness | Owner-projectable |
|---|---|---|---|---|
wow_achievement |
Drupal\wow_achievement\Entity\Achievement |
wow_achievement |
last_fetched |
— |
wow_character |
Drupal\wow_character\Entity\Character |
wow_character |
last_fetched |
via wow_user (uid, is_main) |
wow_guild |
Drupal\wow_guild\Entity\Guild |
wow_guild |
last_fetched |
— |
wow_item |
Drupal\wow_item\Entity\Item |
wow_item |
last_fetched |
— |
wow_mount |
Drupal\wow_mount\Entity\Mount |
wow_mount |
last_fetched |
— |
wow_pet |
Drupal\wow_pet\Entity\Pet |
wow_pet |
last_fetched |
— |
wow_title |
Drupal\wow_title\Entity\Title |
wow_title |
last_fetched |
— |
wow_toy |
Drupal\wow_toy\Entity\Toy |
wow_toy |
last_fetched |
— |
Junction entities (per-owner)¶
Each is owner-agnostic by design — owner references are projected in by the owner module's hook_entity_base_field_info().
| Entity type ID | Class | Declared by | character from |
guild from |
|---|---|---|---|---|
wow_achievement_progress |
Drupal\wow_achievement\Entity\AchievementProgress |
wow_achievement |
wow_character |
wow_guild |
wow_collected_pet |
Drupal\wow_pet\Entity\CollectedPet |
wow_pet |
wow_character |
— |
wow_mount_collection |
Drupal\wow_mount\Entity\MountCollection |
wow_mount |
wow_character |
— |
wow_reputation_standing |
Drupal\wow_reputation\Entity\ReputationStanding |
wow_reputation |
wow_character |
— |
wow_title_award |
Drupal\wow_title\Entity\TitleAward |
wow_title |
wow_character |
— |
wow_toy_collection |
Drupal\wow_toy\Entity\ToyCollection |
wow_toy |
wow_character |
— |
All junctions carry last_fetched for TTL sweeping.
Taxonomies¶
| Vocabulary ID | Module | Notes |
|---|---|---|
wow_realm |
wow_realm |
Realms + connected realm groups, with region + locale |
wow_playable_class |
wow_playable_class |
Classes + class icons |
wow_playable_race |
wow_playable_race |
Races with faction affiliation |
wow_playable_specialization |
wow_playable_specialization |
Specs with role (Tank/Healer/DPS) |
wow_power_type |
wow_power_type |
Mana, Rage, Energy, Focus, Runic Power, etc. |
wow_item_class |
wow_item |
Weapon / Armor / Container / Quest Item / etc. |
wow_char_achi_category |
wow_achievement |
Character achievement category tree |
wow_guild_achi_category |
wow_achievement |
Guild achievement category tree |
wow_reputation_faction |
wow_reputation |
Reputation factions with parent hierarchy |
Every taxonomy vocabulary carries wow_blizzard_id (integer) and wow_last_fetched (timestamp) as configurable fields.
Projected base fields¶
Fields added to OTHER modules' entities at runtime:
| Projected by | Field | Onto |
|---|---|---|
wow_character |
character (entity_reference → wow_character) |
every owner-agnostic junction |
wow_guild |
guild (entity_reference → wow_guild) |
wow_achievement_progress |
wow_user |
uid (entity_reference → user) |
wow_character |
wow_user |
is_main (boolean, default FALSE) |
wow_character |
Install/uninstall of the projecting module handles column creation and removal. See architecture/lifecycle.md.
Cache tags and lists¶
All content entities follow Drupal's default cache tag behavior ({entity_type}:{id} and {entity_type}_list). No custom invalidation is wired — depending on Views or block plugins to invalidate is sufficient.
Don't rely on surrogate IDs across environments¶
id columns are auto-increment and differ between dev / staging / prod. Always identify entities by blizzard_id (content entities and junctions have it as a field or via their achievement / mount / etc. reference). The Blizzard ID is stable across environments and across the Blizzard upstream.