Skip to content

Commit 603a791

Browse files
committed
fix is_official filter and add indexes
1 parent 9840926 commit 603a791

File tree

4 files changed

+36
-8
lines changed

4 files changed

+36
-8
lines changed

api/src/feeds/impl/feeds_api_impl.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,14 @@ def get_gtfs_feed(self, id: str, db_session: Session) -> GtfsFeed:
131131
else:
132132
raise_http_error(404, gtfs_feed_not_found.format(id))
133133

134-
@staticmethod
135134
def _get_gtfs_feed(
136-
stable_id: str, db_session: Session, include_options_for_joinedload: bool = True
135+
self, stable_id: str, db_session: Session, include_options_for_joinedload: bool = True
137136
) -> Optional[Gtfsfeed]:
138-
results = get_gtfs_feeds_query(
137+
query = get_gtfs_feeds_query(
139138
db_session=db_session, stable_id=stable_id, include_options_for_joinedload=include_options_for_joinedload
140-
).all()
139+
)
140+
self.logger.debug("Query: %s", str(query.statement.compile(compile_kwargs={"literal_binds": True})))
141+
results = query.all()
141142
if len(results) == 0:
142143
return None
143144
return results[0]

api/src/shared/common/db_utils.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def get_gtfs_feeds_query(
3737
dataset_latitudes: str | None = None,
3838
dataset_longitudes: str | None = None,
3939
bounding_filter_method: str | None = None,
40-
is_official: bool = False,
40+
is_official: bool | None = None,
4141
published_only: bool = True,
4242
include_options_for_joinedload: bool = True,
4343
) -> Query[any]:
@@ -50,7 +50,9 @@ def get_gtfs_feeds_query(
5050
country_code=country_code,
5151
subdivision_name__ilike=subdivision_name,
5252
municipality__ilike=municipality,
53-
),
53+
)
54+
if country_code or subdivision_name or municipality
55+
else None,
5456
)
5557

5658
subquery = gtfs_feed_filter.filter(select(Gtfsfeed.id).join(Location, Gtfsfeed.locations))
@@ -61,20 +63,22 @@ def get_gtfs_feeds_query(
6163
feed_query = (
6264
db_session.query(Gtfsfeed)
6365
.outerjoin(Gtfsfeed.gtfsdatasets)
64-
.filter(Gtfsfeed.id.in_(subquery))
66+
.join(subquery, Gtfsfeed.id == subquery.c.id)
6567
.filter((Gtfsdataset.latest) | (Gtfsdataset.id == None)) # noqa: E711
6668
)
6769
if published_only:
6870
feed_query = feed_query.filter(Gtfsfeed.operational_status == "published")
6971

72+
feed_query = add_official_filter(feed_query, is_official)
73+
7074
if include_options_for_joinedload:
7175
feed_query = feed_query.options(
7276
contains_eager(Gtfsfeed.gtfsdatasets)
7377
.joinedload(Gtfsdataset.validation_reports)
7478
.joinedload(Validationreport.notices),
7579
*get_joinedload_options(),
7680
).order_by(Gtfsfeed.provider, Gtfsfeed.stable_id)
77-
feed_query = add_official_filter(feed_query, is_official)
81+
7882
feed_query = feed_query.limit(limit).offset(offset)
7983
return feed_query
8084

liquibase/changelog.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,5 @@
4242
<include file="changes/feat_927_2.sql" relativeToChangelogFile="true"/>
4343
<include file="changes/feat_966.sql" relativeToChangelogFile="true"/>
4444
<include file="changes/feat_946.sql" relativeToChangelogFile="true"/>
45+
<include file="changes/add_idxs.sql" relativeToChangelogFile="true"/>
4546
</databaseChangeLog>

liquibase/changes/add_idxs.sql

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
-- Feed
2+
CREATE INDEX idx_feed_id ON Feed(id);
3+
CREATE INDEX idx_feed_status ON Feed(status);
4+
CREATE INDEX idx_feed_provider_stable_id ON Feed(provider, stable_id);
5+
6+
-- GTFSDataset
7+
CREATE INDEX idx_gtfsdataset_feed_id ON GTFSDataset(feed_id);
8+
CREATE INDEX idx_gtfsdataset_latest ON GTFSDataset(latest);
9+
10+
-- LocationFeed
11+
CREATE INDEX idx_locationfeed_feed_id ON LocationFeed(feed_id);
12+
CREATE INDEX idx_locationfeed_location_id ON LocationFeed(location_id);
13+
14+
-- ValidationReport
15+
CREATE INDEX idx_validationreport_validator_version ON ValidationReport(validator_version);
16+
17+
-- ValidationReportGTFSDataset
18+
CREATE INDEX idx_vrgtfsdataset_dataset_id ON ValidationReportGTFSDataset(dataset_id);
19+
CREATE INDEX idx_vrgtfsdataset_report_id ON ValidationReportGTFSDataset(validation_report_id);
20+
21+
22+

0 commit comments

Comments
 (0)