nulla/lib/nulla/likes/like.ex
2025-07-06 14:46:08 +02:00

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