(2)-ish patterns are more what I have in mind, but note that as soon as you're expecting the same `db.query(hats)` to give you the data you need for both (1) and (2), you might already be pretty far down the wrong road.
HatsService
getWearableHats() { return db.query(Hats).toDto() }
getThrowableHats() { return db.otherQuery(Hats).toDto() }
and # wearable.py
getWearableHats() { return db.query(Hats).toDto() }
# throwable.py
getThrowableHats() { return db.otherQuery(Hats).toDto() }