Current section

Files

Jump to
crux_structs lib structs overwrite.ex
Raw

lib/structs/overwrite.ex

defmodule Crux.Structs.Overwrite do
@moduledoc """
Represents a Discord [Overwrite Object](https://discordapp.com/developers/docs/resources/channel#overwrite-object-overwrite-structure).
"""
@behaviour Crux.Structs
alias Crux.Structs.Util
require Util
Util.modulesince("0.1.0")
defstruct(
id: nil,
type: nil,
allow: 0,
deny: 0
)
Util.typesince("0.1.0")
@type t :: %__MODULE__{
id: Crux.Rest.snowflake(),
type: String.t(),
allow: integer(),
deny: integer()
}
@doc """
Creates a `Crux.Structs.Overwrite` struct from raw data.
> Automatically invoked by `Crux.Structs.create/2`.
"""
Util.since("0.1.0")
def create(data) do
data =
data
|> Util.atomify()
|> Map.update!(:id, &Util.id_to_int/1)
struct(__MODULE__, data)
end
end