My general feeling on this file is that you put the bulk of the auto-dj-crates logic in here. That's a layering violation IMO. The DAOs are supposed to be simple wrappers around database resources so that the implementation of the database is kept abstract from the logic consuming the data in the database. That is so that we can swap out the implementation of the DAOs with a different database technology and nothing else in Mixxx will care. 

Could you move all the AutoDJ crates logic into something like an AutoDJCratesManager that would live in the AutoDJFeature?