33 lines
677 B
Elixir
33 lines
677 B
Elixir
defmodule Nulla.Likes.Like do
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
alias Nulla.Snowflake
|
|
alias Nulla.Actors.Actor
|
|
alias Nulla.Notes.Note
|
|
|
|
@primary_key {:id, :integer, autogenerate: false}
|
|
schema "likes" do
|
|
belongs_to :actor, Actor
|
|
belongs_to :note, Note
|
|
|
|
timestamps(type: :utc_datetime)
|
|
end
|
|
|
|
@doc false
|
|
def changeset(like, attrs) do
|
|
like
|
|
|> cast(attrs, [:actor_id, :note_id])
|
|
|> maybe_put_id()
|
|
|> validate_required([:actor_id, :note_id])
|
|
end
|
|
|
|
defp maybe_put_id(changeset) do
|
|
id = get_field(changeset, :id)
|
|
|
|
if is_nil(id) do
|
|
change(changeset, id: Snowflake.next_id())
|
|
else
|
|
changeset
|
|
end
|
|
end
|
|
end
|