From 95bb99b9594bce36459e1993b07515c719a1205b Mon Sep 17 00:00:00 2001 From: Eliot Jordan Date: Wed, 25 Sep 2024 10:07:42 -0500 Subject: [PATCH] Only open and complete resources Co-authored-by: Shaun Ellis --- .../figgy/hydration_consumer.ex | 30 ++++++++++++- .../figgy/hydration_consumer_test.exs | 42 +++++++++++++++++-- 2 files changed, 68 insertions(+), 4 deletions(-) diff --git a/lib/dpul_collections/indexing_pipeline/figgy/hydration_consumer.ex b/lib/dpul_collections/indexing_pipeline/figgy/hydration_consumer.ex index 99f4997..0af2079 100644 --- a/lib/dpul_collections/indexing_pipeline/figgy/hydration_consumer.ex +++ b/lib/dpul_collections/indexing_pipeline/figgy/hydration_consumer.ex @@ -43,11 +43,39 @@ defmodule DpulCollections.IndexingPipeline.Figgy.HydrationConsumer do message end + defp write_to_hydration_cache( + message = %Broadway.Message{ + data: %{ + internal_resource: internal_resource, + metadata: %{"state" => state, "visibility" => visibility} + } + }, + cache_version + ) + when internal_resource in ["EphemeraFolder"] and state == ["complete"] and + visibility == ["open"] do + # store in HydrationCache: + # - data (blob) - this is the record + # - cache_order (datetime) - this is our own new timestamp for this table + # - cache_version (this only changes manually, we have to hold onto it as state) + # - record_id (varchar) - the figgy UUID + # - source_cache_order (datetime) - the figgy updated_at + {:ok, response} = + IndexingPipeline.write_hydration_cache_entry(%{ + cache_version: cache_version, + record_id: message.data.id, + source_cache_order: message.data.updated_at, + data: message.data |> Map.from_struct() |> Map.delete(:__meta__) + }) + + {:ok, response} + end + defp write_to_hydration_cache( message = %Broadway.Message{data: %{internal_resource: internal_resource}}, cache_version ) - when internal_resource in ["EphemeraFolder", "EphemeraTerm"] do + when internal_resource in ["EphemeraTerm"] do # store in HydrationCache: # - data (blob) - this is the record # - cache_order (datetime) - this is our own new timestamp for this table diff --git a/test/dpul_collections/indexing_pipeline/figgy/hydration_consumer_test.exs b/test/dpul_collections/indexing_pipeline/figgy/hydration_consumer_test.exs index 107fd08..0df9ec0 100644 --- a/test/dpul_collections/indexing_pipeline/figgy/hydration_consumer_test.exs +++ b/test/dpul_collections/indexing_pipeline/figgy/hydration_consumer_test.exs @@ -4,13 +4,43 @@ defmodule DpulCollections.IndexingPipeline.Figgy.HydrationConsumerTest do alias DpulCollections.IndexingPipeline.Figgy describe "Figgy.HydrationConsumer" do - test "handle_message/3 only writes EphemeraFolders and EphemeraTerms to the Figgy.HydrationCache" do + test "handle_message/3 only writes open and complete EphemeraFolders and EphemeraTerms to the Figgy.HydrationCache" do ephemera_folder_message = %Broadway.Message{ acknowledger: nil, data: %Figgy.Resource{ id: "47276197-e223-471c-99d7-405c5f6c5285", updated_at: ~U[2018-03-09 20:19:34.486004Z], - internal_resource: "EphemeraFolder" + internal_resource: "EphemeraFolder", + metadata: %{ + "state" => ["complete"], + "visibility" => ["open"] + } + } + } + + pending_ephemera_folder_message = %Broadway.Message{ + acknowledger: nil, + data: %Figgy.Resource{ + id: "47276197-e223-471c-99d7-405c5f6c5285", + updated_at: ~U[2018-03-09 20:19:34.486004Z], + internal_resource: "EphemeraFolder", + metadata: %{ + "state" => ["pending"], + "visibility" => ["open"] + } + } + } + + restricted_ephemera_folder_message = %Broadway.Message{ + acknowledger: nil, + data: %Figgy.Resource{ + id: "47276197-e223-471c-99d7-405c5f6c5285", + updated_at: ~U[2018-03-09 20:19:34.486004Z], + internal_resource: "EphemeraFolder", + metadata: %{ + "state" => ["complete"], + "visibility" => ["restricted"] + } } } @@ -34,7 +64,13 @@ defmodule DpulCollections.IndexingPipeline.Figgy.HydrationConsumerTest do Figgy.HydrationConsumer.handle_batch( nil, - [ephemera_folder_message, ephemera_term_message, scanned_resource_message], + [ + ephemera_folder_message, + pending_ephemera_folder_message, + restricted_ephemera_folder_message, + ephemera_term_message, + scanned_resource_message + ], nil, %{cache_version: 0} )