mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-01-07 23:47:53 +08:00
51 lines
1.4 KiB
Elixir
51 lines
1.4 KiB
Elixir
defmodule LivebookProto do
|
|
alias LivebookProto.{
|
|
AgentConnected,
|
|
AgentKeyCreated,
|
|
AgentKeyDeleted,
|
|
AppDeploymentCreated,
|
|
FileSystemCreated,
|
|
FileSystemDeleted,
|
|
FileSystemUpdated,
|
|
SecretCreated,
|
|
SecretDeleted,
|
|
SecretUpdated,
|
|
DeploymentGroupCreated,
|
|
DeploymentGroupDeleted,
|
|
DeploymentGroupUpdated,
|
|
UserConnected,
|
|
UserDeleted
|
|
}
|
|
|
|
@event_mapping (for {_id, field_prop} <- LivebookProto.Event.__message_props__().field_props,
|
|
into: %{} do
|
|
{field_prop.type, field_prop.name_atom}
|
|
end)
|
|
|
|
@type event_proto ::
|
|
AgentConnected.t()
|
|
| AgentKeyCreated.t()
|
|
| AgentKeyDeleted.t()
|
|
| AppDeploymentCreated.t()
|
|
| FileSystemCreated.t()
|
|
| FileSystemDeleted.t()
|
|
| FileSystemUpdated.t()
|
|
| SecretCreated.t()
|
|
| SecretDeleted.t()
|
|
| SecretUpdated.t()
|
|
| DeploymentGroupCreated.t()
|
|
| DeploymentGroupDeleted.t()
|
|
| DeploymentGroupUpdated.t()
|
|
| UserConnected.t()
|
|
| UserDeleted.t()
|
|
|
|
@doc """
|
|
Builds an event with given data.
|
|
"""
|
|
@spec build_event(event_proto()) :: LivebookProto.Event.t()
|
|
def build_event(%struct{} = data) do
|
|
%LivebookProto.Event{type: {event_type(struct), data}}
|
|
end
|
|
|
|
defp event_type(module), do: Map.fetch!(@event_mapping, module)
|
|
end
|