Skip to content

Commit 877b3e4

Browse files
new event that gets emitted when urls have been detected
1 parent 55f559b commit 877b3e4

File tree

6 files changed

+35
-5
lines changed

6 files changed

+35
-5
lines changed

lib/radiator/event_store.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ defmodule Radiator.EventStore do
1313
data: Event.payload(event),
1414
event_type: Event.event_type(event),
1515
uuid: convert_to_uuid(event.event_id),
16-
user_id: event.user_id
16+
user_id: Event.user_id(event)
1717
})
1818

1919
event

lib/radiator/event_store/event_data.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ defmodule Radiator.EventStore.EventData do
2020
def changeset(event, attrs) do
2121
event
2222
|> cast(attrs, [:uuid, :event_type, :data, :user_id])
23-
|> validate_required([:uuid, :event_type, :user_id])
23+
|> validate_required([:uuid, :event_type])
2424
end
2525
end

lib/radiator/outline/event.ex

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ defmodule Radiator.Outline.Event do
77
NodeContentChangedEvent,
88
NodeDeletedEvent,
99
NodeInsertedEvent,
10-
NodeMovedEvent
10+
NodeMovedEvent,
11+
UrlsAnalyzedEvent
1112
}
1213

1314
def payload(%NodeInsertedEvent{} = event) do
@@ -40,10 +41,21 @@ defmodule Radiator.Outline.Event do
4041
}
4142
end
4243

44+
def payload(%UrlsAnalyzedEvent{} = event) do
45+
%{
46+
node_id: event.node_id,
47+
urls: event.urls
48+
}
49+
end
50+
51+
def user_id(%UrlsAnalyzedEvent{}), do: nil
52+
def user_id(event), do: event.user_id
53+
4354
def event_type(%NodeInsertedEvent{} = _event), do: "NodeInsertedEvent"
4455
def event_type(%NodeContentChangedEvent{} = _event), do: "NodeContentChangedEvent"
4556
def event_type(%NodeDeletedEvent{} = _event), do: "NodeDeletedEvent"
4657
def event_type(%NodeMovedEvent{} = _event), do: "NodeMovedEvent"
58+
def event_type(%UrlsAnalyzedEvent{} = _event), do: "UrlsAnalyzedEvent"
4759

4860
def outline_node_container_id(%{outline_node_container_id: outline_node_container_id}),
4961
do: outline_node_container_id
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
defmodule Radiator.Outline.Event.UrlsAnalyzedEvent do
2+
@moduledoc false
3+
defstruct [:node_id, :urls, :episode_id, event_id: Ecto.UUID.generate()]
4+
end

lib/radiator/resources/node_changed_worker.ex

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ defmodule Radiator.Resources.NodeChangedWorker do
44
"""
55
alias __MODULE__
66
alias Radiator.EpisodeOutliner
7+
alias Radiator.EventStore
78
alias Radiator.NodeAnalyzer
9+
alias Radiator.Outline.Dispatch
10+
alias Radiator.Outline.Event.UrlsAnalyzedEvent
811
alias Radiator.Outline.NodeRepository
912
alias Radiator.Resources
1013

@@ -18,7 +21,6 @@ defmodule Radiator.Resources.NodeChangedWorker do
1821
def perform(node_id) do
1922
analyzers = [Radiator.NodeAnalyzer.UrlAnalyzer]
2023
node = NodeRepository.get_node!(node_id)
21-
2224
episode_id = EpisodeOutliner.episode_id_for_node(node)
2325

2426
url_attributes =
@@ -29,8 +31,18 @@ defmodule Radiator.Resources.NodeChangedWorker do
2931
|> Map.put(:node_id, node_id)
3032
|> Map.put(:episode_id, episode_id)
3133
end)
34+
url_resources = Resources.rebuild_node_urls(node_id, url_attributes)
35+
36+
if url_resources != [] do
37+
%UrlsAnalyzedEvent{
38+
node_id: node_id,
39+
urls: url_resources,
40+
episode_id: node.episode_id
41+
}
42+
|> EventStore.persist_event()
43+
|> Dispatch.broadcast()
44+
end
3245

33-
_created_urls = Resources.rebuild_node_urls(node_id, url_attributes)
3446
:ok
3547
end
3648
end

lib/radiator/resources/url.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ defmodule Radiator.Resources.Url do
55
use Ecto.Schema
66
import Ecto.Changeset
77

8+
@derive {Jason.Encoder, only: [:id, :url, :start_bytes, :size_bytes, :meta_data]}
9+
810
defmodule MetaData do
911
@moduledoc """
1012
Meta data for a URL depending on the analyzers.

0 commit comments

Comments
 (0)