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
suggestion_applied
cross_referenced
reviewed review_requested review_request_removed
)
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
neiam /gitgud
Git Gud
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Packages
⭐
Log in to mark this repository.
1.0 KiB · text
History
6280797