Documentation
* docs(database): answer question about station allegiance/government
Yes, that&39;s supposed to match the controlling faction, but no, it
doesn&39;t always. ([`f811b5f`](https://github.com/irtnog/lethbridge/commit/f811b5f53302e4f5b0377382da791dfbb7db1f40))
* docs(database): give body objects a description ([`0840d8a`](https://github.com/irtnog/lethbridge/commit/0840d8a3895acbc4795110adfb8765e7c7576750))
* docs(database): use similar language to the wiki when describing powers ([`e49ea28`](https://github.com/irtnog/lethbridge/commit/e49ea281f083a85b3bee764465cf1e81c426286d))
* docs(database): use similar language to the wiki when describing factions ([`2d70539`](https://github.com/irtnog/lethbridge/commit/2d70539c265934ec06c536c4a58c727ca469e684))
Feature
* feat(database): model a body&39;s atmospheric composition ([`eb08e8c`](https://github.com/irtnog/lethbridge/commit/eb08e8c7b1d5a929c4f0241e27e67a67ce261f21))
* feat(database): implement pretty printing and equivalence tests for various station services ([`bd369f7`](https://github.com/irtnog/lethbridge/commit/bd369f7ee2538e501434c2db626d072698d15772))
* feat(database): implement equivalence tests for bodies ([`6d8b2d8`](https://github.com/irtnog/lethbridge/commit/6d8b2d87528b66338311bbce57260bc4ffd502f7))
* feat(database): denote StationEconomy objects in an intermediate state ([`7398115`](https://github.com/irtnog/lethbridge/commit/739811525223caf2be1a20b9eda9edffd6303712))
* feat(database): pretty print Body ([`6f71195`](https://github.com/irtnog/lethbridge/commit/6f71195335138c8b99daa6119ea5ae5322fb72b7))
* feat(database): throw an error on unknown system fields ([`341f332`](https://github.com/irtnog/lethbridge/commit/341f33238426a172cdd9eb0f766e6dfd4abfd733))
* feat(database): model bodies ([`2815c3d`](https://github.com/irtnog/lethbridge/commit/2815c3d0b47fce74f049b4c2b1dd335ad6aafec1))
Fix
* fix(database): include the station update time in its equivalence check ([`45d7583`](https://github.com/irtnog/lethbridge/commit/45d7583f0c6d967e509f5b786da3042fae41e4e2))
* fix(database): ignore a commodity&39;s translated name or commodity ID ([`1603827`](https://github.com/irtnog/lethbridge/commit/16038273848b800cce2e60536214ca70f91b85a8))
* fix(database): work around bad market data by treating all order columns as primary keys ([`1b7e15d`](https://github.com/irtnog/lethbridge/commit/1b7e15d8500c0a64dc349cf80a56e6b9b522854c))
* fix(database): de-serialize a system&39;s factions first
Sometimes, a station&39;s data on a faction can be invalid or missing.
For example, Pettitt Metalurgic Base on 36 Ophiuchi A 1 a in the test
galaxy data claims the 36 Ophiuchi Autocracy faction is
Federation-aligned due to these journal entries:
https://edgalaxydata.space/eddn-lookup/extract.php?filename=Journal.Docked-2022-09-19.jsonl.bz2&lineno=7315
https://edgalaxydata.space/eddn-lookup/extract.php?filename=Journal.Docked-2023-01-01.jsonl.bz2&lineno=11071
While the Marshmallow documentation for the knob mentions
serialization, setting `ordered = True` and listing the schema fields
in this order appears to lead to the desired result---that the
system&39;s factions get created (and memoized) from the system&39;s
`factions` field first. Then when Marshmallow processes the system&39;s
stations and bodies, any faction references will use the cached
Faction object.
https://marshmallow.readthedocs.io/en/stable/marshmallow.schema.html#marshmallow.schema.Schema.Meta ([`f98a60f`](https://github.com/irtnog/lethbridge/commit/f98a60fa97437150da051ce441c498e77109d602))
Refactor
* refactor(database): consolidate PowerPlay classes ([`bc8a015`](https://github.com/irtnog/lethbridge/commit/bc8a0154ff9c7da20fd16d053a2cab510c5cefb3))
* refactor(database): simplify the station&39;s pretty printed representation ([`4c42b08`](https://github.com/irtnog/lethbridge/commit/4c42b0806dae3bb3547cd5ab7ae3f5b2409aed6f))
* refactor(database): order columns in the order of their corresponding class&39;s/attribute&39;s appearance ([`d32d706`](https://github.com/irtnog/lethbridge/commit/d32d706559efedd86d6051a071b662d8b1265c55))
* refactor(database): rename class to emphasize its connect to factions ([`fc3d254`](https://github.com/irtnog/lethbridge/commit/fc3d2540f4d7e9e8baea983d9e03b61c3390eff8))
* refactor(database): record a station&39;s shipyard data in a dedicated Shipyard class ([`ba80e53`](https://github.com/irtnog/lethbridge/commit/ba80e5340703b264c136e10fcef80766f24d451e))
* refactor(database): record a station&39;s outfitting data in a dedicated Outfitting class ([`ee8fc71`](https://github.com/irtnog/lethbridge/commit/ee8fc712bc99934fea6da5a0b75c07a351198f20))
* refactor(database): record a station&39;s market data in a dedicated Market class
This should make future market data updates and date comparisons
simpler. ([`7eb3ae1`](https://github.com/irtnog/lethbridge/commit/7eb3ae12eb399123db88550460104c15e754afe6))
* refactor(database): don&39;t waste time sorting the factions and powers lists
This ordering was only done to facilitate testing and is not needed
any more. ([`cc9e293`](https://github.com/irtnog/lethbridge/commit/cc9e2934a9010a2765bfa80160dee5421936107c))
* refactor(database): rename station attributes to better match Spansh ([`8f505df`](https://github.com/irtnog/lethbridge/commit/8f505dfbed078d89f50a9166641037477dd79351))
* refactor(database): rename ShipyardStock to match OutfittingStock ([`643bee1`](https://github.com/irtnog/lethbridge/commit/643bee13ca7ce40188d1c7abc882ce608c6437c4))
* refactor(database): memoize Faction objects using the Marshmallow context
This makes Faction de-duplication much simpler compared to walking the
System and nested/related objects. ([`2ed5103`](https://github.com/irtnog/lethbridge/commit/2ed5103ca509d81226941d9d8f1d5fc2aad485df))
Test
* test(database): disable SQL statement echoing
Due to the volume of log data generated by this flag, it&39;s no longer a
useful debugging aid. ([`eb70d9f`](https://github.com/irtnog/lethbridge/commit/eb70d9f72696e33445842b25041d9be5e0195af7))
Unknown
* release: cut the v0.0.8 release ([`931b988`](https://github.com/irtnog/lethbridge/commit/931b9885bda7093a1703387ffdc0d76b11eead6b))