44
55defmodule Diffo.Provider.Event do
66 @ moduledoc """
7- Diffo - TMF Service and Resource Management with a difference
7+ Diffo - TMF Service and Reource Management with a difference
88
99 Event - Ash Resource for a TMF Event
1010 """
@@ -21,28 +21,34 @@ defmodule Diffo.Provider.Event do
2121 plural_name :events
2222 end
2323
24+ code_interface do
25+ define :create
26+ define :destroy
27+ end
28+
2429 neo4j do
2530 relate [
26- { :instance , :FIRED , :incoming , :Instance } ,
27- #{:earlier_event, :AFTER, :outgoing, :Event}
31+ { :instance , :FIRED , :incoming , :Instance }
32+ # {:earlier_event, :AFTER, :outgoing, :Event}
2833 ]
2934 end
3035
3136 jason do
32- rename id: :eventId , inserted_at: :eventTime , type: :eventType
37+ pick [ :id , :created_at , :type , :instance ]
38+ rename id: :eventId , created_at: :eventTime , type: :eventType
3339
3440 customize fn result , record ->
3541 result
36- |> Event . time ( record )
37- |> Util . rename ( :instance , record . type )
38- |> Util . nest ( [ record . type ] , :event )
42+ |> __MODULE__ . time ( record )
43+ |> Util . rename ( :instance , record . instance_type )
44+ |> Util . nest_as_map ( [ record . instance_type ] , :event )
3945 end
4046
4147 order [ :eventId , :eventTime , :eventType , :event ]
4248 end
4349
4450 outstanding do
45- expect [ :eventType , :eventTime , :event ]
51+ expect [ :type , :created_at , :instance_id , :instance ]
4652 end
4753
4854 actions do
@@ -52,11 +58,11 @@ defmodule Diffo.Provider.Event do
5258 description "creates an event, fired by an instance"
5359 accept [ :type ]
5460 argument :instance_id , :uuid
55- argument :earlier_event_id , :uuid
61+ # argument :earlier_event_id, :uuid
5662
5763 change manage_relationship ( :instance_id , :instance , type: :append_and_remove )
58- #change manage_relationship(:earlier_event_id, :earlier_event, type: :append_and_remove)
59- change load [ :instance_type ]
64+ # change manage_relationship(:earlier_event_id, :earlier_event, type: :append_and_remove)
65+ change load [ :instance_type , :instance ]
6066 end
6167
6268 read :list do
@@ -80,9 +86,20 @@ defmodule Diffo.Provider.Event do
8086 description "the type of the event"
8187 allow_nil? false
8288 public? true
89+
90+ constraints one_of: [
91+ :serviceCreateEvent ,
92+ :serviceStateChangeEvent ,
93+ :serviceAttributeValueChangeEvent ,
94+ :serviceDeleteEvent ,
95+ :resourceCreateEvent ,
96+ :resourceStateChangeEvent ,
97+ :resourceAttributeValueChangeEvent ,
98+ :resourceDeleteEvent
99+ ]
83100 end
84101
85- create_timestamp :inserted_at
102+ create_timestamp :created_at
86103
87104 update_timestamp :updated_at
88105 end
@@ -94,11 +111,11 @@ defmodule Diffo.Provider.Event do
94111 public? true
95112 end
96113
97- #has_one :earlier_event, Diffo.Provider.Event do
114+ # has_one :earlier_event, Diffo.Provider.Event do
98115 # description "the earlier event, if any"
99116 # allow_nil? true
100117 # public? true
101- #end
118+ # end
102119 end
103120
104121 calculations do
@@ -110,17 +127,18 @@ defmodule Diffo.Provider.Event do
110127 end
111128
112129 preparations do
113- prepare build ( load: [ :instance_type ] , sort: [ inserted_at : :desc ] )
130+ prepare build ( load: [ :instance_type , :instance ] , sort: [ created_at : :desc ] )
114131 end
115132
133+ @ spec time ( [ tuple ( ) ] , any ( ) ) :: [ tuple ( ) ]
116134 @ doc """
117135 Assists in encoding event time
118136 """
119137 def time ( result , record ) do
120138 result
121139 |> Diffo.Util . set (
122140 :eventTime ,
123- Diffo.Util . to_iso8601 ( record . inserted_at )
141+ Diffo.Util . to_iso8601 ( record . created_at )
124142 )
125143 end
126144
0 commit comments