Packages
smart_city
5.0.2
6.0.0
5.4.7
5.4.6
5.4.5
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.8
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.1
5.1.0
5.0.7
5.0.6
5.0.5
5.0.4
5.0.3
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.25.0
3.24.0
3.23.0
3.22.0
3.21.0
3.20.1
3.20.0
3.19.1
3.19.0
3.18.3
3.18.2
3.18.1
3.18.0
3.17.0
3.16.0
3.15.1
3.15.0
3.14.1
3.14.0
3.13.0
3.12.0
3.11.0
3.10.0
3.9.0
3.8.0
3.7.0
3.6.0
3.5.1
3.5.0
3.4.0
3.3.0
3.2.4
3.2.3
3.2.1
3.2.0
3.1.0
3.0.0
2.9.0
2.8.2
2.8.0
2.7.1
2.7.0
2.6.1
2.5.0
2.4.2
retired
2.4.1
2.4.0
2.3.0
2.2.0
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
A library for shared helper modules in the Smart Cities Data project.
Current section
Files
Jump to
Current section
Files
lib/smart_city/data_write_complete.ex
defmodule SmartCity.DataWriteComplete do
@moduledoc """
Defines a data persisted event.
"""
alias SmartCity.BaseStruct
@type id :: String.t()
@type timestamp :: DateTime.t()
@type t :: %SmartCity.DataWriteComplete{
:id => id(),
:timestamp => timestamp()
}
@derive Jason.Encoder
defstruct id: nil,
timestamp: nil
@doc """
Instantiates an instance of a data write complete event struct.
"""
@spec new(String.t() | map()) :: {:ok, map()} | {:error, String.t()}
def new(msg) do
BaseStruct.new(msg)
|> create()
end
defp create(%{id: _, timestamp: timestamp} = msg) when is_binary(timestamp) do
{:ok, struct(%__MODULE__{}, msg)}
end
defp create(%{id: _, timestamp: %DateTime{}} = msg) do
{:ok, struct(%__MODULE__{}, Map.update!(msg, :timestamp, &DateTime.to_iso8601/1))}
end
defp create(msg) do
{:error, "Invalid data:write:complete #{inspect(msg)}"}
end
end