986 B · text History 4d15a64
defmodule GitGud.Events.Event do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Accounts.User
@valid_target_types ~w(issue pull_request)
@valid_kinds ~w(
opened closed reopened merged
title_changed description_changed
pushed
labeled unlabeled
moderated unmoderated
comment_added comment_edited comment_deleted
reviewed
)
schema "events" do
field :target_type, :string
field :target_id, :integer
field :kind, :string
field :data, :map, default: %{}
belongs_to :actor, User
timestamps(type: :utc_datetime, updated_at: false)
end
def changeset(event, attrs) do
event
|> cast(attrs, [:target_type, :target_id, :kind, :data, :actor_id])
|> validate_required([:target_type, :target_id, :kind])
|> validate_inclusion(:target_type, @valid_target_types)
|> validate_inclusion(:kind, @valid_kinds)
end
def valid_kinds, do: @valid_kinds
def valid_target_types, do: @valid_target_types
end