Loading cogdb/eddb.py +12 −18 Original line number Diff line number Diff line Loading @@ -2012,30 +2012,22 @@ def get_nearest_traders(session, centre_name, *, StationType.text.like("%Planet%"), StationType.text.like("%Fleet%"))).\ scalar_subquery() econ_id = session.query(Economy.id).\ high_econ_id = session.query(Economy.id).\ filter(Economy.text == 'High Tech').\ scalar_subquery() high_tech_ids = session.query(System.id).\ filter(System.primary_economy_id == econ_id).\ scalar_subquery() econ_id = session.query(Economy.id).\ ext_econ_ids = session.query(Economy.id).\ filter( sqla.or_( Economy.text == 'Extraction', Economy.text == 'Refinery')).\ scalar_subquery() raw_ids = session.query(System.id).\ filter(System.primary_economy_id.in_(econ_id)).\ scalar_subquery() econ_id = session.query(Economy.id).\ ind_econ_id = session.query(Economy.id).\ filter(Economy.text == 'Industrial').\ scalar_subquery() industrial_ids = session.query(System.id).\ filter(System.primary_economy_id == econ_id).\ scalar_subquery() centre = sqla_orm.aliased(System) station_system = sqla_orm.aliased(System) primary_economy = sqla_orm.aliased(StationEconomy) stations = session.query(station_system.name, station_system.dist_to(centre).label('dist_c'), Station.name, Station.distance_to_star, Station.max_landing_pad_size).\ select_from(station_system).\ Loading @@ -2043,26 +2035,28 @@ def get_nearest_traders(session, centre_name, *, join(Station, Station.system_id == station_system.id).\ join(StationType, Station.type_id == StationType.id).\ join(StationFeatures, Station.id == StationFeatures.id).\ join(primary_economy, Station.id == primary_economy.id).\ filter( station_system.dist_to(centre) < sys_dist, Station.distance_to_star < arrival, StationType.text.notin_(exclude)) StationType.text.notin_(exclude), primary_economy.primary) if trader_type == TraderType.BROKERS_GUARDIAN: stations = stations.filter(StationFeatures.technology_broker, station_system.id.in_(high_tech_ids)) primary_economy.economy_id == high_econ_id) elif trader_type == TraderType.BROKERS_HUMAN: stations = stations.filter(StationFeatures.technology_broker, station_system.id.not_in(high_tech_ids)) primary_economy.economy_id != high_econ_id) elif trader_type == TraderType.MATS_DATA: stations = stations.filter(StationFeatures.material_trader, station_system.id.in_(high_tech_ids)) primary_economy.economy_id == high_econ_id) elif trader_type == TraderType.MATS_RAW: stations = stations.filter(StationFeatures.material_trader, station_system.id.in_(raw_ids)) primary_economy.economy_id == ind_econ_id) elif trader_type == TraderType.MATS_MANUFACTURED: stations = stations.filter(StationFeatures.material_trader, station_system.id.in_(industrial_ids)) primary_economy.economy_id.in_(ext_econ_ids)) stations = stations.order_by('dist_c', Station.distance_to_star).\ limit(20).\ Loading tests/cogdb/test_eddb.py +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ def test_get_nearest_stations_with_features(eddb_session): assert "Bolg" in system_names def test_get_nearest_treaders_brokers_guardian(eddb_session): def test_get_nearest_traders_brokers_guardian(eddb_session): result = cogdb.eddb.get_nearest_traders(eddb_session, centre_name='Sol', trader_type=TraderType.BROKERS_GUARDIAN) station_names = {x[2] for x in result} Loading Loading
cogdb/eddb.py +12 −18 Original line number Diff line number Diff line Loading @@ -2012,30 +2012,22 @@ def get_nearest_traders(session, centre_name, *, StationType.text.like("%Planet%"), StationType.text.like("%Fleet%"))).\ scalar_subquery() econ_id = session.query(Economy.id).\ high_econ_id = session.query(Economy.id).\ filter(Economy.text == 'High Tech').\ scalar_subquery() high_tech_ids = session.query(System.id).\ filter(System.primary_economy_id == econ_id).\ scalar_subquery() econ_id = session.query(Economy.id).\ ext_econ_ids = session.query(Economy.id).\ filter( sqla.or_( Economy.text == 'Extraction', Economy.text == 'Refinery')).\ scalar_subquery() raw_ids = session.query(System.id).\ filter(System.primary_economy_id.in_(econ_id)).\ scalar_subquery() econ_id = session.query(Economy.id).\ ind_econ_id = session.query(Economy.id).\ filter(Economy.text == 'Industrial').\ scalar_subquery() industrial_ids = session.query(System.id).\ filter(System.primary_economy_id == econ_id).\ scalar_subquery() centre = sqla_orm.aliased(System) station_system = sqla_orm.aliased(System) primary_economy = sqla_orm.aliased(StationEconomy) stations = session.query(station_system.name, station_system.dist_to(centre).label('dist_c'), Station.name, Station.distance_to_star, Station.max_landing_pad_size).\ select_from(station_system).\ Loading @@ -2043,26 +2035,28 @@ def get_nearest_traders(session, centre_name, *, join(Station, Station.system_id == station_system.id).\ join(StationType, Station.type_id == StationType.id).\ join(StationFeatures, Station.id == StationFeatures.id).\ join(primary_economy, Station.id == primary_economy.id).\ filter( station_system.dist_to(centre) < sys_dist, Station.distance_to_star < arrival, StationType.text.notin_(exclude)) StationType.text.notin_(exclude), primary_economy.primary) if trader_type == TraderType.BROKERS_GUARDIAN: stations = stations.filter(StationFeatures.technology_broker, station_system.id.in_(high_tech_ids)) primary_economy.economy_id == high_econ_id) elif trader_type == TraderType.BROKERS_HUMAN: stations = stations.filter(StationFeatures.technology_broker, station_system.id.not_in(high_tech_ids)) primary_economy.economy_id != high_econ_id) elif trader_type == TraderType.MATS_DATA: stations = stations.filter(StationFeatures.material_trader, station_system.id.in_(high_tech_ids)) primary_economy.economy_id == high_econ_id) elif trader_type == TraderType.MATS_RAW: stations = stations.filter(StationFeatures.material_trader, station_system.id.in_(raw_ids)) primary_economy.economy_id == ind_econ_id) elif trader_type == TraderType.MATS_MANUFACTURED: stations = stations.filter(StationFeatures.material_trader, station_system.id.in_(industrial_ids)) primary_economy.economy_id.in_(ext_econ_ids)) stations = stations.order_by('dist_c', Station.distance_to_star).\ limit(20).\ Loading
tests/cogdb/test_eddb.py +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ def test_get_nearest_stations_with_features(eddb_session): assert "Bolg" in system_names def test_get_nearest_treaders_brokers_guardian(eddb_session): def test_get_nearest_traders_brokers_guardian(eddb_session): result = cogdb.eddb.get_nearest_traders(eddb_session, centre_name='Sol', trader_type=TraderType.BROKERS_GUARDIAN) station_names = {x[2] for x in result} Loading