From 067baebaafe3ad6a5c0f1b0a6715ed891125203b Mon Sep 17 00:00:00 2001 From: David Gamez Diaz <1192523+davidgamez@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:07:37 -0400 Subject: [PATCH 1/3] move db models to shared folder under shared folder --- api/src/feeds/impl/datasets_api_impl.py | 2 +- api/src/feeds/impl/feeds_api_impl.py | 10 +++++----- api/src/feeds/impl/search_api_impl.py | 2 +- .../models => shared/db_models}/basic_feed_impl.py | 4 ++-- .../models => shared/db_models}/bounding_box_impl.py | 0 .../models => shared/db_models}/entity_type_enum.py | 0 .../models => shared/db_models}/external_id_impl.py | 0 .../impl/models => shared/db_models}/feed_impl.py | 2 +- .../db_models}/gbfs_endpoint_impl.py | 0 .../models => shared/db_models}/gbfs_feed_impl.py | 8 ++++---- .../db_models}/gbfs_validation_report_impl.py | 0 .../models => shared/db_models}/gbfs_version_impl.py | 4 ++-- .../models => shared/db_models}/gtfs_dataset_impl.py | 4 ++-- .../models => shared/db_models}/gtfs_feed_impl.py | 8 ++++---- .../models => shared/db_models}/gtfs_rt_feed_impl.py | 4 ++-- .../db_models}/latest_dataset_impl.py | 2 +- .../models => shared/db_models}/location_impl.py | 0 .../models => shared/db_models}/redirect_impl.py | 0 .../db_models}/search_feed_item_result_impl.py | 0 .../db_models}/validation_report_impl.py | 0 api/tests/unittest/models/test_basic_feed_impl.py | 6 +++--- api/tests/unittest/models/test_bounding_box_impl.py | 2 +- api/tests/unittest/models/test_external_id_impl.py | 2 +- api/tests/unittest/models/test_gbfs_feed_impl.py | 8 ++++---- api/tests/unittest/models/test_gtfs_dataset_impl.py | 2 +- api/tests/unittest/models/test_gtfs_feed_impl.py | 12 ++++++------ api/tests/unittest/models/test_gtfs_rt_feed_impl.py | 8 ++++---- .../unittest/models/test_latest_dataset_impl.py | 4 ++-- api/tests/unittest/models/test_location_impl.py | 2 +- api/tests/unittest/models/test_redirect_id_impl.py | 2 +- .../models/test_search_feed_item_result_impl.py | 2 +- .../unittest/models/test_validation_report_impl.py | 2 +- api/tests/unittest/test_feeds.py | 2 +- .../src/middleware/request_context_oauth2.py | 10 +++++----- 34 files changed, 57 insertions(+), 57 deletions(-) rename api/src/{feeds/impl/models => shared/db_models}/basic_feed_impl.py (94%) rename api/src/{feeds/impl/models => shared/db_models}/bounding_box_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/entity_type_enum.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/external_id_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/feed_impl.py (93%) rename api/src/{feeds/impl/models => shared/db_models}/gbfs_endpoint_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/gbfs_feed_impl.py (84%) rename api/src/{feeds/impl/models => shared/db_models}/gbfs_validation_report_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/gbfs_version_impl.py (89%) rename api/src/{feeds/impl/models => shared/db_models}/gtfs_dataset_impl.py (94%) rename api/src/{feeds/impl/models => shared/db_models}/gtfs_feed_impl.py (82%) rename api/src/{feeds/impl/models => shared/db_models}/gtfs_rt_feed_impl.py (89%) rename api/src/{feeds/impl/models => shared/db_models}/latest_dataset_impl.py (97%) rename api/src/{feeds/impl/models => shared/db_models}/location_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/redirect_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/search_feed_item_result_impl.py (100%) rename api/src/{feeds/impl/models => shared/db_models}/validation_report_impl.py (100%) diff --git a/api/src/feeds/impl/datasets_api_impl.py b/api/src/feeds/impl/datasets_api_impl.py index 436ab547c..de97f4d0c 100644 --- a/api/src/feeds/impl/datasets_api_impl.py +++ b/api/src/feeds/impl/datasets_api_impl.py @@ -14,7 +14,7 @@ from shared.common.error_handling import ( dataset_not_found, ) -from feeds.impl.models.gtfs_dataset_impl import GtfsDatasetImpl +from shared.db_models.gtfs_dataset_impl import GtfsDatasetImpl from feeds_gen.apis.datasets_api_base import BaseDatasetsApi from feeds_gen.models.gtfs_dataset import GtfsDataset diff --git a/api/src/feeds/impl/feeds_api_impl.py b/api/src/feeds/impl/feeds_api_impl.py index 6bd1e95d9..78a2a1aec 100644 --- a/api/src/feeds/impl/feeds_api_impl.py +++ b/api/src/feeds/impl/feeds_api_impl.py @@ -8,11 +8,11 @@ from feeds.impl.datasets_api_impl import DatasetsApiImpl from feeds.impl.error_handling import raise_http_error, raise_http_validation_error, convert_exception -from feeds.impl.models.entity_type_enum import EntityType -from feeds.impl.models.feed_impl import FeedImpl -from feeds.impl.models.gbfs_feed_impl import GbfsFeedImpl -from feeds.impl.models.gtfs_feed_impl import GtfsFeedImpl -from feeds.impl.models.gtfs_rt_feed_impl import GtfsRTFeedImpl +from shared.db_models.entity_type_enum import EntityType +from shared.db_models.feed_impl import FeedImpl +from shared.db_models.gbfs_feed_impl import GbfsFeedImpl +from shared.db_models.gtfs_feed_impl import GtfsFeedImpl +from shared.db_models.gtfs_rt_feed_impl import GtfsRTFeedImpl from feeds_gen.apis.feeds_api_base import BaseFeedsApi from feeds_gen.models.feed import Feed from feeds_gen.models.gbfs_feed import GbfsFeed diff --git a/api/src/feeds/impl/search_api_impl.py b/api/src/feeds/impl/search_api_impl.py index 7bca4057d..980282935 100644 --- a/api/src/feeds/impl/search_api_impl.py +++ b/api/src/feeds/impl/search_api_impl.py @@ -6,7 +6,7 @@ from shared.database.database import Database, with_db_session from shared.database.sql_functions.unaccent import unaccent from shared.database_gen.sqlacodegen_models import t_feedsearch -from feeds.impl.models.search_feed_item_result_impl import SearchFeedItemResultImpl +from shared.db_models.search_feed_item_result_impl import SearchFeedItemResultImpl from feeds_gen.apis.search_api_base import BaseSearchApi from feeds_gen.models.search_feeds200_response import SearchFeeds200Response from middleware.request_context import is_user_email_restricted diff --git a/api/src/feeds/impl/models/basic_feed_impl.py b/api/src/shared/db_models/basic_feed_impl.py similarity index 94% rename from api/src/feeds/impl/models/basic_feed_impl.py rename to api/src/shared/db_models/basic_feed_impl.py index 8bb74f196..47b6d90af 100644 --- a/api/src/feeds/impl/models/basic_feed_impl.py +++ b/api/src/shared/db_models/basic_feed_impl.py @@ -1,6 +1,6 @@ from shared.database_gen.sqlacodegen_models import Feed -from feeds.impl.models.external_id_impl import ExternalIdImpl -from feeds.impl.models.redirect_impl import RedirectImpl +from shared.db_models.external_id_impl import ExternalIdImpl +from shared.db_models.redirect_impl import RedirectImpl from feeds_gen.models.basic_feed import BasicFeed from feeds_gen.models.source_info import SourceInfo diff --git a/api/src/feeds/impl/models/bounding_box_impl.py b/api/src/shared/db_models/bounding_box_impl.py similarity index 100% rename from api/src/feeds/impl/models/bounding_box_impl.py rename to api/src/shared/db_models/bounding_box_impl.py diff --git a/api/src/feeds/impl/models/entity_type_enum.py b/api/src/shared/db_models/entity_type_enum.py similarity index 100% rename from api/src/feeds/impl/models/entity_type_enum.py rename to api/src/shared/db_models/entity_type_enum.py diff --git a/api/src/feeds/impl/models/external_id_impl.py b/api/src/shared/db_models/external_id_impl.py similarity index 100% rename from api/src/feeds/impl/models/external_id_impl.py rename to api/src/shared/db_models/external_id_impl.py diff --git a/api/src/feeds/impl/models/feed_impl.py b/api/src/shared/db_models/feed_impl.py similarity index 93% rename from api/src/feeds/impl/models/feed_impl.py rename to api/src/shared/db_models/feed_impl.py index 760d1cbf7..dc4bf527b 100644 --- a/api/src/feeds/impl/models/feed_impl.py +++ b/api/src/shared/db_models/feed_impl.py @@ -1,4 +1,4 @@ -from feeds.impl.models.basic_feed_impl import BaseFeedImpl +from shared.db_models.basic_feed_impl import BaseFeedImpl from feeds_gen.models.feed import Feed from shared.database_gen.sqlacodegen_models import Feed as FeedOrm diff --git a/api/src/feeds/impl/models/gbfs_endpoint_impl.py b/api/src/shared/db_models/gbfs_endpoint_impl.py similarity index 100% rename from api/src/feeds/impl/models/gbfs_endpoint_impl.py rename to api/src/shared/db_models/gbfs_endpoint_impl.py diff --git a/api/src/feeds/impl/models/gbfs_feed_impl.py b/api/src/shared/db_models/gbfs_feed_impl.py similarity index 84% rename from api/src/feeds/impl/models/gbfs_feed_impl.py rename to api/src/shared/db_models/gbfs_feed_impl.py index 5dc195bc6..883ea544d 100644 --- a/api/src/feeds/impl/models/gbfs_feed_impl.py +++ b/api/src/shared/db_models/gbfs_feed_impl.py @@ -1,8 +1,8 @@ -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl -from feeds.impl.models.feed_impl import FeedImpl -from feeds.impl.models.gbfs_version_impl import GbfsVersionImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.feed_impl import FeedImpl +from shared.db_models.gbfs_version_impl import GbfsVersionImpl from shared.database_gen.sqlacodegen_models import Gbfsfeed as GbfsFeedOrm -from feeds.impl.models.location_impl import LocationImpl +from shared.db_models.location_impl import LocationImpl from feeds_gen.models.gbfs_feed import GbfsFeed diff --git a/api/src/feeds/impl/models/gbfs_validation_report_impl.py b/api/src/shared/db_models/gbfs_validation_report_impl.py similarity index 100% rename from api/src/feeds/impl/models/gbfs_validation_report_impl.py rename to api/src/shared/db_models/gbfs_validation_report_impl.py diff --git a/api/src/feeds/impl/models/gbfs_version_impl.py b/api/src/shared/db_models/gbfs_version_impl.py similarity index 89% rename from api/src/feeds/impl/models/gbfs_version_impl.py rename to api/src/shared/db_models/gbfs_version_impl.py index c9e9a32c1..0af15cf34 100644 --- a/api/src/feeds/impl/models/gbfs_version_impl.py +++ b/api/src/shared/db_models/gbfs_version_impl.py @@ -1,5 +1,5 @@ -from feeds.impl.models.gbfs_endpoint_impl import GbfsEndpointImpl -from feeds.impl.models.gbfs_validation_report_impl import GbfsValidationReportImpl +from shared.db_models.gbfs_endpoint_impl import GbfsEndpointImpl +from shared.db_models.gbfs_validation_report_impl import GbfsValidationReportImpl from feeds_gen.models.gbfs_version import GbfsVersion from shared.database_gen.sqlacodegen_models import Gbfsversion as GbfsVersionOrm diff --git a/api/src/feeds/impl/models/gtfs_dataset_impl.py b/api/src/shared/db_models/gtfs_dataset_impl.py similarity index 94% rename from api/src/feeds/impl/models/gtfs_dataset_impl.py rename to api/src/shared/db_models/gtfs_dataset_impl.py index bce790a50..b7161ca44 100644 --- a/api/src/feeds/impl/models/gtfs_dataset_impl.py +++ b/api/src/shared/db_models/gtfs_dataset_impl.py @@ -2,8 +2,8 @@ from typing import List from shared.database_gen.sqlacodegen_models import Gtfsdataset, Validationreport -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl -from feeds.impl.models.validation_report_impl import ValidationReportImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.validation_report_impl import ValidationReportImpl from feeds_gen.models.gtfs_dataset import GtfsDataset from utils.model_utils import compare_java_versions diff --git a/api/src/feeds/impl/models/gtfs_feed_impl.py b/api/src/shared/db_models/gtfs_feed_impl.py similarity index 82% rename from api/src/feeds/impl/models/gtfs_feed_impl.py rename to api/src/shared/db_models/gtfs_feed_impl.py index 282cd7ee6..423d6b942 100644 --- a/api/src/feeds/impl/models/gtfs_feed_impl.py +++ b/api/src/shared/db_models/gtfs_feed_impl.py @@ -1,8 +1,8 @@ -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl -from feeds.impl.models.feed_impl import FeedImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.feed_impl import FeedImpl from shared.database_gen.sqlacodegen_models import Gtfsfeed as GtfsfeedOrm -from feeds.impl.models.latest_dataset_impl import LatestDatasetImpl -from feeds.impl.models.location_impl import LocationImpl +from shared.db_models.latest_dataset_impl import LatestDatasetImpl +from shared.db_models.location_impl import LocationImpl from feeds_gen.models.gtfs_feed import GtfsFeed diff --git a/api/src/feeds/impl/models/gtfs_rt_feed_impl.py b/api/src/shared/db_models/gtfs_rt_feed_impl.py similarity index 89% rename from api/src/feeds/impl/models/gtfs_rt_feed_impl.py rename to api/src/shared/db_models/gtfs_rt_feed_impl.py index d26f4845b..789cfe5d6 100644 --- a/api/src/feeds/impl/models/gtfs_rt_feed_impl.py +++ b/api/src/shared/db_models/gtfs_rt_feed_impl.py @@ -1,6 +1,6 @@ -from feeds.impl.models.feed_impl import FeedImpl +from shared.db_models.feed_impl import FeedImpl from shared.database_gen.sqlacodegen_models import Gtfsrealtimefeed as GtfsRTFeedOrm -from feeds.impl.models.location_impl import LocationImpl +from shared.db_models.location_impl import LocationImpl from feeds_gen.models.gtfs_rt_feed import GtfsRTFeed diff --git a/api/src/feeds/impl/models/latest_dataset_impl.py b/api/src/shared/db_models/latest_dataset_impl.py similarity index 97% rename from api/src/feeds/impl/models/latest_dataset_impl.py rename to api/src/shared/db_models/latest_dataset_impl.py index a59cc628f..f2d18f6fa 100644 --- a/api/src/feeds/impl/models/latest_dataset_impl.py +++ b/api/src/shared/db_models/latest_dataset_impl.py @@ -1,7 +1,7 @@ from functools import reduce from shared.database_gen.sqlacodegen_models import Gtfsdataset -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl from feeds_gen.models.latest_dataset import LatestDataset from feeds_gen.models.latest_dataset_validation_report import LatestDatasetValidationReport from utils.model_utils import compare_java_versions diff --git a/api/src/feeds/impl/models/location_impl.py b/api/src/shared/db_models/location_impl.py similarity index 100% rename from api/src/feeds/impl/models/location_impl.py rename to api/src/shared/db_models/location_impl.py diff --git a/api/src/feeds/impl/models/redirect_impl.py b/api/src/shared/db_models/redirect_impl.py similarity index 100% rename from api/src/feeds/impl/models/redirect_impl.py rename to api/src/shared/db_models/redirect_impl.py diff --git a/api/src/feeds/impl/models/search_feed_item_result_impl.py b/api/src/shared/db_models/search_feed_item_result_impl.py similarity index 100% rename from api/src/feeds/impl/models/search_feed_item_result_impl.py rename to api/src/shared/db_models/search_feed_item_result_impl.py diff --git a/api/src/feeds/impl/models/validation_report_impl.py b/api/src/shared/db_models/validation_report_impl.py similarity index 100% rename from api/src/feeds/impl/models/validation_report_impl.py rename to api/src/shared/db_models/validation_report_impl.py diff --git a/api/tests/unittest/models/test_basic_feed_impl.py b/api/tests/unittest/models/test_basic_feed_impl.py index c2dfe8f27..a6435182a 100644 --- a/api/tests/unittest/models/test_basic_feed_impl.py +++ b/api/tests/unittest/models/test_basic_feed_impl.py @@ -3,7 +3,7 @@ from datetime import datetime from zoneinfo import ZoneInfo -from feeds.impl.models.feed_impl import FeedImpl +from shared.db_models.feed_impl import FeedImpl from shared.database_gen.sqlacodegen_models import ( Feed, Externalid, @@ -13,8 +13,8 @@ Redirectingid, Feature, ) -from feeds.impl.models.external_id_impl import ExternalIdImpl -from feeds.impl.models.redirect_impl import RedirectImpl +from shared.db_models.external_id_impl import ExternalIdImpl +from shared.db_models.redirect_impl import RedirectImpl from feeds_gen.models.source_info import SourceInfo targetFeed = Feed( diff --git a/api/tests/unittest/models/test_bounding_box_impl.py b/api/tests/unittest/models/test_bounding_box_impl.py index 96fb1420d..f35b12726 100644 --- a/api/tests/unittest/models/test_bounding_box_impl.py +++ b/api/tests/unittest/models/test_bounding_box_impl.py @@ -2,7 +2,7 @@ from geoalchemy2 import WKTElement -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl from feeds_gen.models.bounding_box import BoundingBox POLYGON = "POLYGON ((3.0 1.0, 4.0 1.0, 4.0 2.0, 3.0 2.0, 3.0 1.0))" diff --git a/api/tests/unittest/models/test_external_id_impl.py b/api/tests/unittest/models/test_external_id_impl.py index a23c75ff5..0627a94bc 100644 --- a/api/tests/unittest/models/test_external_id_impl.py +++ b/api/tests/unittest/models/test_external_id_impl.py @@ -1,7 +1,7 @@ import unittest from shared.database_gen.sqlacodegen_models import Externalid -from feeds.impl.models.external_id_impl import ExternalIdImpl +from shared.db_models.external_id_impl import ExternalIdImpl external_id_orm = Externalid( feed_id="feed_id", diff --git a/api/tests/unittest/models/test_gbfs_feed_impl.py b/api/tests/unittest/models/test_gbfs_feed_impl.py index e038c9a42..701f34acd 100644 --- a/api/tests/unittest/models/test_gbfs_feed_impl.py +++ b/api/tests/unittest/models/test_gbfs_feed_impl.py @@ -5,10 +5,10 @@ from feeds_gen.models.source_info import SourceInfo from shared.database_gen.sqlacodegen_models import Gbfsfeed, Location, Gbfsversion -from feeds.impl.models.gbfs_feed_impl import GbfsFeedImpl -from feeds.impl.models.location_impl import LocationImpl -from feeds.impl.models.gbfs_version_impl import GbfsVersionImpl -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.gbfs_feed_impl import GbfsFeedImpl +from shared.db_models.location_impl import LocationImpl +from shared.db_models.gbfs_version_impl import GbfsVersionImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl POLYGON = "POLYGON ((3.0 1.0, 4.0 1.0, 4.0 2.0, 3.0 2.0, 3.0 1.0))" diff --git a/api/tests/unittest/models/test_gtfs_dataset_impl.py b/api/tests/unittest/models/test_gtfs_dataset_impl.py index add3a9f34..583ae0b48 100644 --- a/api/tests/unittest/models/test_gtfs_dataset_impl.py +++ b/api/tests/unittest/models/test_gtfs_dataset_impl.py @@ -5,7 +5,7 @@ from geoalchemy2 import WKTElement from shared.database_gen.sqlacodegen_models import Validationreport, Gtfsdataset, Feed -from feeds.impl.models.gtfs_dataset_impl import GtfsDatasetImpl +from shared.db_models.gtfs_dataset_impl import GtfsDatasetImpl POLYGON = "POLYGON ((3.0 1.0, 4.0 1.0, 4.0 2.0, 3.0 2.0, 3.0 1.0))" diff --git a/api/tests/unittest/models/test_gtfs_feed_impl.py b/api/tests/unittest/models/test_gtfs_feed_impl.py index ac3ec5792..a5ac64582 100644 --- a/api/tests/unittest/models/test_gtfs_feed_impl.py +++ b/api/tests/unittest/models/test_gtfs_feed_impl.py @@ -17,12 +17,12 @@ Notice, Feed, ) -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl -from feeds.impl.models.external_id_impl import ExternalIdImpl -from feeds.impl.models.gtfs_feed_impl import GtfsFeedImpl -from feeds.impl.models.latest_dataset_impl import LatestDatasetImpl -from feeds.impl.models.location_impl import LocationImpl -from feeds.impl.models.redirect_impl import RedirectImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.external_id_impl import ExternalIdImpl +from shared.db_models.gtfs_feed_impl import GtfsFeedImpl +from shared.db_models.latest_dataset_impl import LatestDatasetImpl +from shared.db_models.location_impl import LocationImpl +from shared.db_models.redirect_impl import RedirectImpl from feeds_gen.models.latest_dataset_validation_report import LatestDatasetValidationReport from feeds_gen.models.source_info import SourceInfo diff --git a/api/tests/unittest/models/test_gtfs_rt_feed_impl.py b/api/tests/unittest/models/test_gtfs_rt_feed_impl.py index 9c54c4422..6b2b5ae50 100644 --- a/api/tests/unittest/models/test_gtfs_rt_feed_impl.py +++ b/api/tests/unittest/models/test_gtfs_rt_feed_impl.py @@ -10,10 +10,10 @@ Feed, ) from feeds_gen.models.source_info import SourceInfo -from feeds.impl.models.gtfs_rt_feed_impl import GtfsRTFeedImpl -from feeds.impl.models.external_id_impl import ExternalIdImpl -from feeds.impl.models.location_impl import LocationImpl -from feeds.impl.models.redirect_impl import RedirectImpl +from shared.db_models.gtfs_rt_feed_impl import GtfsRTFeedImpl +from shared.db_models.external_id_impl import ExternalIdImpl +from shared.db_models.location_impl import LocationImpl +from shared.db_models.redirect_impl import RedirectImpl targetFeed = Feed( id="id1", diff --git a/api/tests/unittest/models/test_latest_dataset_impl.py b/api/tests/unittest/models/test_latest_dataset_impl.py index 675a2d2d6..4f26455d3 100644 --- a/api/tests/unittest/models/test_latest_dataset_impl.py +++ b/api/tests/unittest/models/test_latest_dataset_impl.py @@ -5,8 +5,8 @@ from geoalchemy2 import WKTElement from shared.database_gen.sqlacodegen_models import Gtfsdataset, Feed, Validationreport, Feature -from feeds.impl.models.bounding_box_impl import BoundingBoxImpl -from feeds.impl.models.latest_dataset_impl import LatestDatasetImpl +from shared.db_models.bounding_box_impl import BoundingBoxImpl +from shared.db_models.latest_dataset_impl import LatestDatasetImpl POLYGON = "POLYGON ((3.0 1.0, 4.0 1.0, 4.0 2.0, 3.0 2.0, 3.0 1.0))" diff --git a/api/tests/unittest/models/test_location_impl.py b/api/tests/unittest/models/test_location_impl.py index ac0ead801..566ba317f 100644 --- a/api/tests/unittest/models/test_location_impl.py +++ b/api/tests/unittest/models/test_location_impl.py @@ -1,6 +1,6 @@ import unittest -from feeds.impl.models.location_impl import LocationImpl +from shared.db_models.location_impl import LocationImpl from shared.database_gen.sqlacodegen_models import Location as LocationOrm diff --git a/api/tests/unittest/models/test_redirect_id_impl.py b/api/tests/unittest/models/test_redirect_id_impl.py index 9789ec577..d78e150dd 100644 --- a/api/tests/unittest/models/test_redirect_id_impl.py +++ b/api/tests/unittest/models/test_redirect_id_impl.py @@ -2,7 +2,7 @@ from shared.database_gen.sqlacodegen_models import Redirectingid from shared.database_gen.sqlacodegen_models import Feed -from feeds.impl.models.redirect_impl import RedirectImpl +from shared.db_models.redirect_impl import RedirectImpl redirect_orm = Redirectingid( source_id="source_id", target_id="target_id", redirect_comment="comment", target=Feed(stable_id="target_id") diff --git a/api/tests/unittest/models/test_search_feed_item_result_impl.py b/api/tests/unittest/models/test_search_feed_item_result_impl.py index 6a5c38675..f022fa51d 100644 --- a/api/tests/unittest/models/test_search_feed_item_result_impl.py +++ b/api/tests/unittest/models/test_search_feed_item_result_impl.py @@ -3,7 +3,7 @@ import copy from faker import Faker -from feeds.impl.models.search_feed_item_result_impl import SearchFeedItemResultImpl +from shared.db_models.search_feed_item_result_impl import SearchFeedItemResultImpl from feeds_gen.models.latest_dataset import LatestDataset from feeds_gen.models.latest_dataset_validation_report import LatestDatasetValidationReport from feeds_gen.models.location import Location diff --git a/api/tests/unittest/models/test_validation_report_impl.py b/api/tests/unittest/models/test_validation_report_impl.py index d3bdcd51d..2819173dc 100644 --- a/api/tests/unittest/models/test_validation_report_impl.py +++ b/api/tests/unittest/models/test_validation_report_impl.py @@ -2,7 +2,7 @@ from datetime import datetime from shared.database_gen.sqlacodegen_models import Validationreport, Notice, Feature -from feeds.impl.models.validation_report_impl import ValidationReportImpl +from shared.db_models.validation_report_impl import ValidationReportImpl class TestValidationReportImpl(unittest.TestCase): diff --git a/api/tests/unittest/test_feeds.py b/api/tests/unittest/test_feeds.py index 756425dba..456b4797d 100644 --- a/api/tests/unittest/test_feeds.py +++ b/api/tests/unittest/test_feeds.py @@ -5,7 +5,7 @@ from fastapi.testclient import TestClient -from feeds.impl.models.feed_impl import FeedImpl +from shared.db_models.feed_impl import FeedImpl from shared.database.database import Database from shared.database_gen.sqlacodegen_models import ( Feed, diff --git a/functions-python/operations_api/src/middleware/request_context_oauth2.py b/functions-python/operations_api/src/middleware/request_context_oauth2.py index b1773acf7..e558faea9 100644 --- a/functions-python/operations_api/src/middleware/request_context_oauth2.py +++ b/functions-python/operations_api/src/middleware/request_context_oauth2.py @@ -114,13 +114,13 @@ def extract_authorization_oauth(headers: dict, google_client_id: str) -> str: token = auth_header.split(" ")[1] - token_info = get_token_info(token, google_client_id) + # token_info = get_token_info(token, google_client_id) - email = token_info.get("email") - if not email: - raise HTTPException(status_code=400, detail="Email not found in token") + # email = token_info.get("email") + # if not email: + # raise HTTPException(status_code=400, detail="Email not found in token") - return email + return "david@mobilitydata.org" class RequestContext: From 86663f9908c1ecfc2a27db80bdd913fffad1055c Mon Sep 17 00:00:00 2001 From: David Gamez Diaz <1192523+davidgamez@users.noreply.github.com> Date: Wed, 22 Oct 2025 12:30:38 -0400 Subject: [PATCH 2/3] revert change --- .../src/middleware/request_context_oauth2.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/functions-python/operations_api/src/middleware/request_context_oauth2.py b/functions-python/operations_api/src/middleware/request_context_oauth2.py index e558faea9..b1773acf7 100644 --- a/functions-python/operations_api/src/middleware/request_context_oauth2.py +++ b/functions-python/operations_api/src/middleware/request_context_oauth2.py @@ -114,13 +114,13 @@ def extract_authorization_oauth(headers: dict, google_client_id: str) -> str: token = auth_header.split(" ")[1] - # token_info = get_token_info(token, google_client_id) + token_info = get_token_info(token, google_client_id) - # email = token_info.get("email") - # if not email: - # raise HTTPException(status_code=400, detail="Email not found in token") + email = token_info.get("email") + if not email: + raise HTTPException(status_code=400, detail="Email not found in token") - return "david@mobilitydata.org" + return email class RequestContext: From 40d8b87a0a02b6e7eb68165f3a942e95479eeb66 Mon Sep 17 00:00:00 2001 From: David Gamez Diaz <1192523+davidgamez@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:18:20 -0400 Subject: [PATCH 3/3] fix latest dataset filtering --- api/src/feeds/impl/datasets_api_impl.py | 3 ++- api/src/feeds/impl/feeds_api_impl.py | 2 +- api/tests/integration/test_datasets_api.py | 22 ++++++++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/api/src/feeds/impl/datasets_api_impl.py b/api/src/feeds/impl/datasets_api_impl.py index de97f4d0c..7910fc275 100644 --- a/api/src/feeds/impl/datasets_api_impl.py +++ b/api/src/feeds/impl/datasets_api_impl.py @@ -50,7 +50,8 @@ def get_datasets_gtfs(query: Query, session: Session, limit: int = None, offset: offset=offset, group_by=lambda x: x[0].stable_id, ) - + if not dataset_groups: + return [] gtfs_datasets = [] for dataset_group in dataset_groups: dataset_objects: Tuple[Gtfsdataset, ...] diff --git a/api/src/feeds/impl/feeds_api_impl.py b/api/src/feeds/impl/feeds_api_impl.py index 78a2a1aec..2812e5d2f 100644 --- a/api/src/feeds/impl/feeds_api_impl.py +++ b/api/src/feeds/impl/feeds_api_impl.py @@ -183,7 +183,7 @@ def get_gtfs_feed_datasets( ).filter(DatasetsApiImpl.create_dataset_query().filter(FeedOrm.stable_id == gtfs_feed_id)) if latest: - query = query.join(Gtfsdataset.feed).filter(Gtfsdataset.id == FeedOrm.latest_dataset_id) + query = query.join(Gtfsfeed, Gtfsfeed.latest_dataset_id == Gtfsdataset.id) return DatasetsApiImpl.get_datasets_gtfs(query, session=db_session, limit=limit, offset=offset) diff --git a/api/tests/integration/test_datasets_api.py b/api/tests/integration/test_datasets_api.py index 1fac44460..7b28ddcb3 100644 --- a/api/tests/integration/test_datasets_api.py +++ b/api/tests/integration/test_datasets_api.py @@ -39,6 +39,28 @@ def test_feeds_gtfs_id_datasets_get(client: TestClient): assert response.status_code == 200 +def test_feeds_gtfs_datasets_latest_get(client: TestClient): + """Test case for feeds_gtfs_id_datasets_get""" + params = [ + ("latest", True), + ("limit", 10), + ("offset", 0), + ("filter", "status=active"), + ("sort", "+provider"), + ] + response = client.request( + "GET", + "/v1/gtfs_feeds/{id}/datasets".format(id=TEST_GTFS_FEED_STABLE_IDS[0]), + headers=authHeaders, + params=params, + ) + + assert response.status_code == 200 + json_response = response.json() + assert len(json_response) == 1, "Expected only the latest datasets" + assert json_response[0]["id"] == TEST_DATASET_STABLE_IDS[1] # dataset-2 + + def test_feeds_wrong_gtfs_id_datasets_get(client: TestClient): """Test case for feeds_gtfs_id_datasets_get where the gtfs feed id does not exist"""