# Database Schema Layout (`game`)

This project uses multiple PostgreSQL schemas to keep domain data separated and maintainable.

## Search Path

Configured on database level:

```sql
ALTER DATABASE game SET search_path = world, economy, progression, gameplay, resources, system, public;
```

So unqualified table names still resolve in this order.

---

## Schemas

### `world`
Map/world topology and placements.

- `server_maps`
- `server_map_flags`
- `map_portals`
- `map_npcs`
- `map_monsters`
- `map_teleporters`

### `economy`
Shops, drops, and loot containers.

- `shops`
- `shop_items`
- `shop_skills`
- `item_boxes`
- `item_box_items`
- `drops`

### `progression`
Questing and recipe progression data.

- `recipes`
- `recipe_items`
- `quests`
- `quest_objectives`
- `quest_prizes`
- `quest_npcs`
- `tutorials`

### `gameplay`
Combat/gameplay mechanics and event configs.

- `skills`
- `skill_bcards`
- `skill_combos`
- `minigame_config`
- `minigame_scores_holders`
- `global_minigame_config`
- `gameevent_instant_battle_configs`

### `resources`
Raw synced file resources (DB-first support).

- `resource_files`

### `system`
System-level metadata.

- `__EFMigrationsHistory`

---

## Notes

- Keep new feature tables in the matching domain schema, **not** in `public`.
- If you add EF migrations, ensure schema-qualified table mapping is explicit.
- DB-first runtime loaders depend on these tables being present and populated.
