diff --git a/materializationengine/blueprints/client/api.py b/materializationengine/blueprints/client/api.py index ceed41d2..f177458d 100644 --- a/materializationengine/blueprints/client/api.py +++ b/materializationengine/blueprints/client/api.py @@ -220,6 +220,31 @@ def get(self, datastack_name: str, version: int): schema = AnalysisVersionSchema() return schema.dump(response), 200 +@client_bp.route("/datastack//metadata") +class DatastackMetadata(Resource): + @reset_auth + @auth_required + @client_bp.doc("all valid version metadata", security="apikey") + def get(self, datastack_name: str): + """get materialized metadata for all valid versions + Args: + datastack_name (str): datastack name + Returns: + list: list of metadata dictionaries + """ + aligned_volume_name, pcg_table_name = get_relevant_datastack_info(datastack_name) + session = sqlalchemy_cache.get(aligned_volume_name) + response = ( + session.query(AnalysisVersion) + .filter(AnalysisVersion.datastack == datastack_name) + .filter(AnalysisVersion.valid == True) + .all() + ) + if response is None: + return "No valid versions found", 404 + schema = AnalysisVersionSchema() + return schema.dump(response, many=True), 200 + @client_bp.route("/datastack//version//tables") class FrozenTableVersions(Resource): @reset_auth