Collections¶
Four submodules, same shape: mounts, battle pets, toys, titles. Each provides a catalog of what exists in-game and tracks which items each character has collected.
Mounts — wow_mount¶
- Catalog: mount name, description, source (vendor/drop/quest/etc.), faction restrictions, and icon.
- Per-character: which mounts are collected, favorites, and usability flags.
Battle pets — wow_pet¶
- Catalog: pet name, battle-pet type (Beast, Dragonkin, Mechanical, etc.), source, abilities.
- Per-character: collected pet instances with nickname, level, quality (rarity), breed, favorite flag.
Toys — wow_toy¶
- Catalog: toy name, source, item reference.
- Per-character: which toys are unlocked.
Titles — wow_title¶
- Catalog: title name (including gender-specific forms) and display order.
- Per-character: which titles are earned and which one is currently active.
How per-character collection works¶
Each collection module registers a CharacterDataProvider plugin. When wow_character syncs a character, the plugin runs automatically and fills in that character's collection from the matching /profile/wow/character/{realm}/{name}/collections/{type} endpoint.
There's no "collection sync" step separate from character sync. Enable the collection module → run the catalog sync → refresh characters.
If the catalog hasn't been synced yet, unknown items are silently skipped in the per-character sync. Catalogs always sync first.
Dashboard actions¶
Each collection module exposes catalog actions on the dashboard (Sync now, Force resync, Wipe). There is no per-character collection button — collection freshness is tied to character refresh.
Storage model¶
Collections use owner-agnostic junction entities (wow_mount_collection, wow_collected_pet, wow_title_award, wow_toy_collection). The character owner reference is projected in only when wow_character is enabled. Disabling wow_character doesn't orphan the junction rows, but character-specific queries stop working. See lifecycle.