Skip to content

Commit

Permalink
improvement(Removed child entities from GraphQL schema): Only parent …
Browse files Browse the repository at this point in the history
…entities will be returned
  • Loading branch information
br648 committed Feb 6, 2025
1 parent 2390130 commit 2c256c9
Show file tree
Hide file tree
Showing 10 changed files with 61 additions and 1,523 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import com.conveyal.gtfs.model.FareProduct;
import com.conveyal.gtfs.model.FareTransferRule;
import com.conveyal.gtfs.model.Network;
import com.conveyal.gtfs.model.Route;
import com.conveyal.gtfs.model.RouteNetwork;
import com.conveyal.gtfs.model.StopArea;
import com.conveyal.gtfs.model.TimeFrame;
Expand Down Expand Up @@ -40,15 +39,13 @@ private GraphQLGtfsFaresV2Schema() {}
.field(MapFetcher.field("id", GraphQLInt))
.field(MapFetcher.field(StopArea.AREA_ID_NAME))
.field(MapFetcher.field(StopArea.STOP_ID_NAME))
.field(createFieldDefinition("stops", GraphQLGtfsSchema.stopType, "stops", StopArea.STOP_ID_NAME))
.build();

public static final GraphQLObjectType areaType = newObject().name(AREA_TYPE_NAME)
.description("A GTFS area object")
.field(MapFetcher.field("id", GraphQLInt))
.field(MapFetcher.field(Area.AREA_ID_NAME))
.field(MapFetcher.field(Area.AREA_NAME_NAME))
.field(createFieldDefinition("stop_areas", stopAreaType, StopArea.TABLE_NAME, Area.AREA_ID_NAME))
.build();

public static final GraphQLObjectType timeFrameType = newObject().name(TIME_FRAME_TYPE_NAME)
Expand All @@ -72,7 +69,6 @@ private GraphQLGtfsFaresV2Schema() {}
.field(MapFetcher.field("id", GraphQLInt))
.field(MapFetcher.field(RouteNetwork.NETWORK_ID_NAME))
.field(MapFetcher.field(RouteNetwork.ROUTE_ID_NAME))
.field(createFieldDefinition("networks", networkType, Network.TABLE_NAME, RouteNetwork.NETWORK_ID_NAME))
.build();

public static final GraphQLObjectType fareMediaType = newObject().name(FARE_MEDIA_TYPE_NAME)
Expand All @@ -91,7 +87,6 @@ private GraphQLGtfsFaresV2Schema() {}
.field(MapFetcher.field(FareProduct.FARE_MEDIA_ID_NAME))
.field(MapFetcher.field(FareProduct.AMOUNT_NAME))
.field(MapFetcher.field(FareProduct.CURRENCY_NAME))
.field(createFieldDefinition(FARE_MEDIA_TYPE_NAME, fareMediaType, FareMedia.TABLE_NAME, FareProduct.FARE_MEDIA_ID_NAME))
.build();

public static final GraphQLObjectType fareLegRuleType = newObject().name(FARE_LEG_RULE_TYPE_NAME)
Expand All @@ -105,27 +100,6 @@ private GraphQLGtfsFaresV2Schema() {}
.field(MapFetcher.field(FareLegRule.TO_TIMEFRAME_GROUP_ID_NAME))
.field(MapFetcher.field(FareLegRule.FARE_PRODUCT_ID_NAME))
.field(MapFetcher.field(FareLegRule.RULE_PRIORITY_NAME))
// Will return either routes or networks, not both.
.field(createFieldDefinition("routes", GraphQLGtfsSchema.routeType, Route.TABLE_NAME, FareLegRule.NETWORK_ID_NAME))
.field(createFieldDefinition("networks", networkType, Network.TABLE_NAME, Network.NETWORK_ID_NAME))
.field(createFieldDefinition("fare_products", fareProductType, FareProduct.TABLE_NAME, FareLegRule.FARE_PRODUCT_ID_NAME))
// fromTimeFrame and toTimeFrame may return multiple time frames.
.field(createFieldDefinition(
"from_time_frame",
timeFrameType,
TimeFrame.TABLE_NAME,
FareLegRule.FROM_TIMEFRAME_GROUP_ID_NAME,
TimeFrame.TIME_FRAME_GROUP_ID_NAME
))
.field(createFieldDefinition(
"to_time_frame",
timeFrameType,
TimeFrame.TABLE_NAME,
FareLegRule.TO_TIMEFRAME_GROUP_ID_NAME,
TimeFrame.TIME_FRAME_GROUP_ID_NAME
))
.field(createFieldDefinition("to_area", areaType, Area.TABLE_NAME, FareLegRule.TO_AREA_ID_NAME, Area.AREA_ID_NAME))
.field(createFieldDefinition("from_area", areaType, Area.TABLE_NAME, FareLegRule.FROM_AREA_ID_NAME, Area.AREA_ID_NAME))
.build();

public static final GraphQLObjectType fareTransferRuleType = newObject().name(FARE_TRANSFER_RULE_TYPE_NAME)
Expand All @@ -136,23 +110,8 @@ private GraphQLGtfsFaresV2Schema() {}
.field(MapFetcher.field(FareTransferRule.TRANSFER_COUNT_NAME))
.field(MapFetcher.field(FareTransferRule.DURATION_LIMIT_NAME))
.field(MapFetcher.field(FareTransferRule.DURATION_LIMIT_TYPE_NAME))
.field(MapFetcher.field(FareTransferRule.FARE_TRANSFER_TYPE_NAME))
.field(MapFetcher.field(FareTransferRule.FARE_PRODUCT_ID_NAME))
.field(createFieldDefinition("to_area", areaType, Area.TABLE_NAME, FareLegRule.TO_AREA_ID_NAME, Area.AREA_ID_NAME))
.field(createFieldDefinition("fare_products", fareProductType, FareProduct.TABLE_NAME, FareProduct.FARE_PRODUCT_ID_NAME))
.field(createFieldDefinition(
"from_fare_leg_rule",
fareLegRuleType,
FareLegRule.TABLE_NAME,
FareTransferRule.FROM_LEG_GROUP_ID_NAME,
FareLegRule.LEG_GROUP_ID_NAME
))
.field(createFieldDefinition(
"to_fare_leg_rule",
fareLegRuleType,
FareLegRule.TABLE_NAME,
FareTransferRule.TO_LEG_GROUP_ID_NAME,
FareLegRule.LEG_GROUP_ID_NAME
))
.build();

public static List<GraphQLFieldDefinition> getFaresV2FieldDefinitions() {
Expand Down
6 changes: 2 additions & 4 deletions src/main/java/com/conveyal/gtfs/loader/Table.java
Original file line number Diff line number Diff line change
Expand Up @@ -395,13 +395,11 @@ public Table (String name, Class<? extends Entity> entityClass, Requirement requ
.addPrimaryKeyNames(Network.NETWORK_ID_NAME);

public static final Table ROUTE_NETWORKS = new Table(RouteNetwork.TABLE_NAME, RouteNetwork.class, OPTIONAL,
new StringField(RouteNetwork.NETWORK_ID_NAME, REQUIRED).isReferenceTo(NETWORKS),
new StringField(RouteNetwork.ROUTE_ID_NAME, REQUIRED).isReferenceTo(ROUTES)
new StringField(RouteNetwork.ROUTE_ID_NAME, REQUIRED).isReferenceTo(ROUTES),
new StringField(RouteNetwork.NETWORK_ID_NAME, REQUIRED).isReferenceTo(NETWORKS)
)
.keyFieldIsNotUnique()
.addPrimaryKeyNames(RouteNetwork.ROUTE_ID_NAME);


// GTFS reference: https://developers.google.com/transit/gtfs/reference#fare_rulestxt
public static final Table FARE_RULES = new Table("fare_rules", FareRule.class, OPTIONAL,
new StringField("fare_id", REQUIRED).isReferenceTo(FARE_ATTRIBUTES),
Expand Down
9 changes: 0 additions & 9 deletions src/test/resources/graphql/feedAreas.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,6 @@ query ($namespace: String) {
area_id
area_name
id
stop_areas {
area_id
stop_id
id
stops {
stop_id
stop_name
}
}
}
}
}
35 changes: 0 additions & 35 deletions src/test/resources/graphql/feedFareLegRules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,41 +11,6 @@ query ($namespace: String) {
fare_product_id
rule_priority
id
routes {
route_id
route_long_name
}
networks {
network_id
network_name
}
fare_products {
fare_product_id
fare_product_name
fare_media_id
amount
currency
}
from_time_frame {
timeframe_group_id
start_time
end_time
service_id
}
to_time_frame {
timeframe_group_id
start_time
end_time
service_id
}
to_area {
area_id
area_name
}
from_area {
area_id
area_name
}
}
}
}
37 changes: 2 additions & 35 deletions src/test/resources/graphql/feedFareTransferRules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,47 +2,14 @@ query ($namespace: String) {
feed(namespace: $namespace) {
feed_version
fare_transfer_rule (limit: 2) {
id
from_leg_group_id
to_leg_group_id
transfer_count
duration_limit
duration_limit_type
fare_transfer_type
fare_product_id
fare_products {
fare_product_id
fare_product_name
fare_media_id
amount
currency
fare_media {
fare_media_id
fare_media_name
fare_media_type
id
}
}
from_fare_leg_rule {
leg_group_id
network_id
from_area_id
to_area_id
from_timeframe_group_id
to_timeframe_group_id
fare_product_id
rule_priority
id
}
to_fare_leg_rule {
leg_group_id
network_id
from_area_id
to_area_id
from_timeframe_group_id
to_timeframe_group_id
fare_product_id
rule_priority
id
}
}
}
}
4 changes: 0 additions & 4 deletions src/test/resources/graphql/feedStopAreas.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ query ($namespace: String) {
area_id
stop_id
id
stops {
stop_id
stop_name
}
}
}
}
Loading

0 comments on commit 2c256c9

Please sign in to comment.