Skip to content

Commit de85384

Browse files
committed
event_test
1 parent 20d8bc0 commit de85384

20 files changed

Lines changed: 250 additions & 46 deletions

lib/diffo/helpers/util.ex

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,10 +412,28 @@ defmodule Diffo.Util do
412412
413413
"""
414414
def nest(list, tuple_keys, new_tuple_key) when is_list(list) and is_list(tuple_keys) do
415-
{nested_list, remainder_list} = Enum.split_with(list, fn {tuple_key, _} -> tuple_key in tuple_keys end)
415+
{nested_list, remainder_list} =
416+
Enum.split_with(list, fn {tuple_key, _} -> tuple_key in tuple_keys end)
417+
416418
set(remainder_list, new_tuple_key, nested_list)
417419
end
418420

421+
@doc """
422+
Nest values from list of tuples into a map, with a new tuple key
423+
## Examples
424+
iex> list = [state: :up, weeks: 1, days: 5]
425+
iex> Diffo.Util.nest_as_map(list, [:weeks, :days], :duration)
426+
iex>
427+
[state: :up, duration: %{weeks: 1, days: 5}]
428+
429+
"""
430+
def nest_as_map(list, tuple_keys, new_tuple_key) when is_list(list) and is_list(tuple_keys) do
431+
{nested_list, remainder_list} =
432+
Enum.split_with(list, fn {tuple_key, _} -> tuple_key in tuple_keys end)
433+
434+
set(remainder_list, new_tuple_key, Map.new(nested_list))
435+
end
436+
419437
defimpl Jason.Encoder, for: Tuple do
420438
def encode(tuple, _opts) when is_tuple(tuple) do
421439
tuple

lib/diffo/provider/components/base_instance.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ defmodule Diffo.Provider.BaseInstance do
204204
constraints one_of: Diffo.Provider.Service.service_operating_statuses()
205205
end
206206

207-
create_timestamp :inserted_at
207+
create_timestamp :created_at
208208

209209
update_timestamp :updated_at
210210

@@ -479,7 +479,7 @@ defmodule Diffo.Provider.BaseInstance do
479479
:places,
480480
:parties
481481
],
482-
sort: [inserted_at: :desc]
482+
sort: [created_at: :desc]
483483
)
484484
end
485485

lib/diffo/provider/components/characteristic.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ defmodule Diffo.Provider.Characteristic do
107107
constraints one_of: [:instance, :feature, :relationship]
108108
end
109109

110-
create_timestamp :inserted_at
110+
create_timestamp :created_at
111111

112112
update_timestamp :updated_at
113113
end

lib/diffo/provider/components/entity.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ defmodule Diffo.Provider.Entity do
112112
public? true
113113
end
114114

115-
create_timestamp :inserted_at
115+
create_timestamp :created_at
116116

117117
update_timestamp :updated_at
118118
end

lib/diffo/provider/components/entity_ref.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ defmodule Diffo.Provider.EntityRef do
9494
public? true
9595
end
9696

97-
create_timestamp :inserted_at
97+
create_timestamp :created_at
9898

9999
update_timestamp :updated_at
100100
end
@@ -121,7 +121,7 @@ defmodule Diffo.Provider.EntityRef do
121121
end
122122

123123
preparations do
124-
prepare build(load: [:entity], sort: [inserted_at: :desc])
124+
prepare build(load: [:entity], sort: [created_at: :desc])
125125
end
126126

127127
@doc """

lib/diffo/provider/components/event.ex

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
defmodule 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

lib/diffo/provider/components/external_identifier.ex

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ defmodule Diffo.Provider.ExternalIdentifier do
111111
public? true
112112
end
113113

114-
create_timestamp :inserted_at
114+
create_timestamp :created_at
115115

116116
update_timestamp :updated_at
117117
end
@@ -144,20 +144,20 @@ defmodule Diffo.Provider.ExternalIdentifier do
144144
end
145145

146146
preparations do
147-
prepare build(load: [:owner], sort: [inserted_at: :desc])
147+
prepare build(load: [:owner], sort: [created_at: :desc])
148148
end
149149

150150
@doc """
151151
Compares two external identifier, by most recent insertion order
152152
## Examples
153-
iex> Diffo.Provider.ExternalIdentifier.compare(%{inserted_at: "a"}, %{inserted_at: "a"})
153+
iex> Diffo.Provider.ExternalIdentifier.compare(%{created_at: "a"}, %{created_at: "a"})
154154
:eq
155-
iex> Diffo.Provider.ExternalIdentifier.compare(%{inserted_at: "b"}, %{inserted_at: "a"})
155+
iex> Diffo.Provider.ExternalIdentifier.compare(%{created_at: "b"}, %{created_at: "a"})
156156
:gt
157-
iex> Diffo.Provider.ExternalIdentifier.compare(%{inserted_at: "a"}, %{inserted_at: "b"})
157+
iex> Diffo.Provider.ExternalIdentifier.compare(%{created_at: "a"}, %{created_at: "b"})
158158
:lt
159159
160160
"""
161-
def compare(%{inserted_at: inserted_at0}, %{inserted_at: inserted_at1}),
162-
do: Diffo.Util.compare(inserted_at0, inserted_at1)
161+
def compare(%{created_at: created_at0}, %{created_at: created_at1}),
162+
do: Diffo.Util.compare(created_at0, created_at1)
163163
end

lib/diffo/provider/components/feature.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ defmodule Diffo.Provider.Feature do
109109
default true
110110
end
111111

112-
create_timestamp :inserted_at
112+
create_timestamp :created_at
113113

114114
update_timestamp :updated_at
115115
end

lib/diffo/provider/components/instance/extension/party.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ defmodule Diffo.Provider.Instance.Party do
4747
{:error, "couldn't relate parties"}
4848

4949
_ ->
50-
# sorted = Ash.Sort.runtime_sort(party_refs, [role: :asc, inserted_at: :desc])
50+
# sorted = Ash.Sort.runtime_sort(party_refs, [role: :asc, created_at: :desc])
5151
{:ok, result |> Map.put(:parties, party_refs)}
5252
end
5353
end

lib/diffo/provider/components/instance/extension/place.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ defmodule Diffo.Provider.Instance.Place do
4747
{:error, "couldn't relate places"}
4848

4949
_ ->
50-
# sorted = Ash.Sort.runtime_sort(place_refs, [role: :asc, inserted_at: :desc])
50+
# sorted = Ash.Sort.runtime_sort(place_refs, [role: :asc, created_at: :desc])
5151
{:ok, result |> Map.put(:places, place_refs)}
5252
end
5353
end

0 commit comments

Comments
 (0)