sde 0.2.2

A library to read Eve Online's SDE data from sqlite database.
Documentation
# TODO


What's left to implement in `sde`, based on the 78 real `.jsonl` files
the SDE export ships (JSONL variant only, not YAML) -- minus
`translationLanguages.jsonl`, which isn't a game-data file (it's just
the list of the 8 language codes -- `en`, `es`, `de`, `fr`, `ja`, `ko`,
`ru`, `zh` -- already used throughout the parser).

This document is generated by comparing that real file list against
what `builder::parser` actually writes and what `SdeManager` actually
reads -- it's an inventory, not a wishlist.

See [ERD.md](ERD.md) for the diagram of the tables already implemented.

## All 77 files


✅ = full coverage, 🟡 = partial, ❌ = none.

| File | Category | Table(s) | Written | Read |
|---|---|---|---|---|
| `categories.jsonl` | Core taxonomy | `invCategories` |||
| `groups.jsonl` | Core taxonomy | `invGroups` |||
| `types.jsonl` | Core taxonomy | `invTypes`, `typeStar` |||
| `races.jsonl` | Core taxonomy | `races` |||
| `factions.jsonl` | Factions & NPC corporations | `factions`, `factionRace` |||
| `npcCorporations.jsonl` | Factions & NPC corporations | `npcCorporations`, `npcCorporationAllowedRaces`, `npcCorporationDivisionAssignments`, `npcCorporationTrades`, `npcCorporationInvestors` |||
| `npcCorporationDivisions.jsonl` | Factions & NPC corporations | `npcCorporationDivisions` |||
| `npcStations.jsonl` | NPC stations | `npcStations` |||
| `stationOperations.jsonl` | NPC stations | `stationOperations`, `stationOperationServices`, `stationOperationTypes` |||
| `stationServices.jsonl` | NPC stations | `stationServices` |||
| `mapRegions.jsonl` | Universe / map | `mapRegions` || 🟡 |
| `mapConstellations.jsonl` | Universe / map | `mapConstellations` || 🟡 |
| `mapSolarSystems.jsonl` | Universe / map | `mapSolarSystems`, `factionSolarSystem`, `mapSolarSystemDisallowedAnchorableCategories`, `mapSolarSystemDisallowedAnchorableGroups`, `mapSolarSystemSubType` || 🟡 |
| `mapStargates.jsonl` | Universe / map | `mapSystemGates`, `mapSystemConnections` || 🟡 |
| `mapStars.jsonl` | Universe / map | `mapStars` |||
| `mapPlanets.jsonl` | Universe / map | `mapPlanets` || 🟡 |
| `mapMoons.jsonl` | Universe / map | `mapMoons` || 🟡 |
| `mapAsteroidBelts.jsonl` | Universe / map ||||
| `mapSecondarySuns.jsonl` | Universe / map ||||
| `dogmaAttributeCategories.jsonl` | Item mechanics (dogma) ||||
| `dogmaAttributes.jsonl` | Item mechanics (dogma) ||||
| `dogmaEffects.jsonl` | Item mechanics (dogma) ||||
| `dogmaUnits.jsonl` | Item mechanics (dogma) ||||
| `typeDogma.jsonl` | Item mechanics (dogma) ||||
| `typeBonus.jsonl` | Item mechanics (dogma) ||||
| `dynamicItemAttributes.jsonl` | Item mechanics (dogma) ||||
| `typeMaterials.jsonl` | Item mechanics (dogma) ||||
| `dbuffCollections.jsonl` | Item mechanics (dogma) ||||
| `compressibleTypes.jsonl` | Item mechanics (dogma) ||||
| `contrabandTypes.jsonl` | Item mechanics (dogma) ||||
| `marketGroups.jsonl` | Item catalog & visuals ||||
| `metaGroups.jsonl` | Item catalog & visuals ||||
| `blueprints.jsonl` | Item catalog & visuals ||||
| `shipTreeElements.jsonl` | Item catalog & visuals ||||
| `shipTreeFactions.jsonl` | Item catalog & visuals ||||
| `shipTreeGroups.jsonl` | Item catalog & visuals ||||
| `typeElements.jsonl` | Item catalog & visuals ||||
| `typeLists.jsonl` | Item catalog & visuals ||||
| `graphics.jsonl` | Item catalog & visuals ||||
| `graphicMaterialSets.jsonl` | Item catalog & visuals ||||
| `icons.jsonl` | Item catalog & visuals ||||
| `skins.jsonl` | Skins ||||
| `skinLicenses.jsonl` | Skins ||||
| `skinMaterials.jsonl` | Skins ||||
| `skinrComponentCategories.jsonl` | Skins ||||
| `skinrComponentPointValues.jsonl` | Skins ||||
| `skinrComponentRarities.jsonl` | Skins ||||
| `skinrComponents.jsonl` | Skins ||||
| `skinrSlotCategories.jsonl` | Skins ||||
| `skinrSlotConfigurations.jsonl` | Skins ||||
| `skinrSlotNames.jsonl` | Skins ||||
| `skinrSlots.jsonl` | Skins ||||
| `skinrTierThresholds.jsonl` | Skins ||||
| `ancestries.jsonl` | Characters & agents ||||
| `archetypes.jsonl` | Characters & agents ||||
| `bloodlines.jsonl` | Characters & agents ||||
| `characterAttributes.jsonl` | Characters & agents ||||
| `characterTitles.jsonl` | Characters & agents ||||
| `cloneGrades.jsonl` | Characters & agents ||||
| `masteries.jsonl` | Characters & agents ||||
| `agentTypes.jsonl` | Characters & agents ||||
| `agentsInSpace.jsonl` | Characters & agents ||||
| `npcCharacters.jsonl` | Characters & agents ||||
| `missions.jsonl` | Missions & narrative content ||||
| `dungeons.jsonl` | Missions & narrative content ||||
| `epicArcs.jsonl` | Missions & narrative content ||||
| `freelanceJobSchemas.jsonl` | Missions & narrative content ||||
| `mercenaryTacticalOperations.jsonl` | Missions & narrative content ||||
| `militaryCampaigns.jsonl` | Missions & narrative content ||||
| `militaryCampaignObjectives.jsonl` | Missions & narrative content ||||
| `sovereigntyUpgrades.jsonl` | Missions & narrative content ||||
| `landmarks.jsonl` | Missions & narrative content ||||
| `planetResources.jsonl` | Planetary interaction & structures ||||
| `planetSchematics.jsonl` | Planetary interaction & structures ||||
| `controlTowerResources.jsonl` | Planetary interaction & structures ||||
| `certificates.jsonl` | Misc ||||
| `corporationActivities.jsonl` | Misc ||||

**The central point of this whole document**: of the 17 files that are
implemented, only the map-related ones
(`mapRegions`/`mapConstellations`/`mapSolarSystems`/`mapStargates`(via
its derived table)/`mapPlanets`/`mapMoons`) have *any* read coverage,
and none of them have it complete except the dynamic table
`mapAbstractSystems` (from `builder::community`, not from an SDE file).
Everything else -- item taxonomy, races, factions, corporations, stars,
stations -- gets written but can't be queried from `SdeManager` today.

## Known limitations, documented in the code


- Only the JSONL variant of the SDE is read, not YAML.
- Only the isometric 2D projection is computed, not the dimetric one,
  when `position2D` is missing from the source data.
- `npcCorporations.lpOfferTables` isn't modeled -- it references a
  dataset (loyalty point offer tables) this project doesn't have.
- `npcCorporations.exchangeRates` isn't modeled -- present in only 1 of
  283 real records checked, not enough to confirm its real shape.
- Two real corporations (Doomheim, InterBus) have a `stationId` that
  doesn't resolve to any real station -- it's cleared to `NULL`
  automatically when building the database, not an error.
- `builder::community`'s community-maintained layer (ice belts, Jove
  Observatories, Triglavian invasion status, special ore anomalies,
  and `mapAbstractSystems` itself) is entirely optional, off by
  default -- gated behind `ParserConfig.with_third_party` /
  `sde-builder build --with-third-party`, so a plain build produces a
  database containing canonical SDE data only.