|
24 | 24 | import subprocess |
25 | 25 | import tempfile |
26 | 26 | from enum import Enum |
| 27 | + |
| 28 | +import flask |
| 29 | +import functions_framework |
27 | 30 | from google.cloud import storage |
| 31 | +from sqlalchemy.orm import Session |
28 | 32 |
|
29 | 33 | from csv_cache import ( |
30 | 34 | CsvCache, |
|
35 | 39 | AGENCY_FILE, |
36 | 40 | SHAPES_FILE, |
37 | 41 | ) |
38 | | -from shared.helpers.runtime_metrics import track_metrics |
39 | | -from shared.helpers.logger import get_logger, init_logger |
40 | 42 | from gtfs_stops_to_geojson import convert_stops_to_geojson |
41 | | - |
42 | | -import flask |
43 | | -import functions_framework |
| 43 | +from shared.database_gen.sqlacodegen_models import Gtfsdataset, Gtfsfeed |
| 44 | +from shared.helpers.logger import get_logger, init_logger |
| 45 | +from shared.helpers.runtime_metrics import track_metrics |
| 46 | +from shared.database.database import with_db_session |
44 | 47 |
|
45 | 48 | init_logger() |
46 | 49 |
|
@@ -198,6 +201,7 @@ def build_pmtiles(self): |
198 | 201 |
|
199 | 202 | files_to_upload = ["routes.pmtiles", "stops.pmtiles", "routes.json"] |
200 | 203 | self._upload_files_to_gcs(files_to_upload) |
| 204 | + self._update_database() |
201 | 205 |
|
202 | 206 | return self.OperationStatus.SUCCESS, "success" |
203 | 207 |
|
@@ -521,3 +525,30 @@ def _load_agencies(self): |
521 | 525 | agencies[agency_id] = agency_name |
522 | 526 |
|
523 | 527 | return agencies |
| 528 | + |
| 529 | + @with_db_session |
| 530 | + def _update_database(self, db_session: Session = None): |
| 531 | + dataset = ( |
| 532 | + db_session.query(Gtfsdataset) |
| 533 | + .filter(Gtfsdataset.stable_id == self.dataset_stable_id) |
| 534 | + .one_or_none() |
| 535 | + ) |
| 536 | + if not dataset: |
| 537 | + self.logger.error( |
| 538 | + "Dataset %s not found in database, cannot update pmtiles_generated.", |
| 539 | + self.dataset_stable_id, |
| 540 | + ) |
| 541 | + return |
| 542 | + |
| 543 | + # fetch the subclass row that shares the same PK as Feed |
| 544 | + gtfsfeed = db_session.get(Gtfsfeed, dataset.feed_id) |
| 545 | + if not gtfsfeed: |
| 546 | + self.logger.error( |
| 547 | + "Gtfsfeed(id=%s) not found (but Feed exists) — cannot set visualization_dataset.", |
| 548 | + dataset.feed_id, |
| 549 | + ) |
| 550 | + return |
| 551 | + |
| 552 | + # set the relationship on the subclass |
| 553 | + gtfsfeed.visualization_dataset = dataset |
| 554 | + db_session.commit() |
0 commit comments