Skip to content

Commit 5ae6acf

Browse files
committed
add dataset mv refresh
1 parent db37620 commit 5ae6acf

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

database/interface.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from functools import wraps
44
from typing import List
55

6-
from sqlalchemy import asc, desc, func, inspect
6+
from sqlalchemy import asc, desc, func, inspect, text
77
from sqlalchemy.exc import NoResultFound
88
from sqlalchemy.orm import aliased
99

@@ -803,6 +803,25 @@ def get_harvest_records_by_source(
803803
model="harvest_records", facets=facet_string, order_by=order_by, **kwargs
804804
)
805805

806+
def refresh_dataset_mv(self):
807+
try:
808+
self.db.execute(
809+
text(
810+
"""
811+
DO $$
812+
BEGIN
813+
IF EXISTS (SELECT 1 FROM pg_class WHERE relname = 'dataset' AND relkind = 'm') THEN
814+
REFRESH MATERIALIZED VIEW CONCURRENTLY dataset;
815+
END IF;
816+
END $$;
817+
"""
818+
)
819+
)
820+
self.db.commit()
821+
except Exception as e:
822+
logger.error("Error: %s", e)
823+
self.db.rollback()
824+
806825

807826
def order_by_helper(model, order_by):
808827
return model.date_created.asc() if order_by == "asc" else model.date_created.desc()

harvester/harvest.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,6 +1038,10 @@ def harvest_job_starter(job_id, job_type="harvest"):
10381038

10391039
logger.info(f"Harvest job completed for JobId: {job_id}")
10401040

1041+
logger.info("Refreshing 'dataset' materialized view")
1042+
# refresh "dataset" materialized view
1043+
harvest_source.db_interface.refresh_dataset_mv()
1044+
10411045
# close the db connection after job to prevent persistent open connections
10421046
harvest_source.db_interface.close()
10431047

0 commit comments

Comments
 (0)