30 lines
793 B
Elixir
30 lines
793 B
Elixir
defmodule Bright.Streams.Stream do
|
|
use Ecto.Schema
|
|
import Ecto.Changeset
|
|
alias Bright.Tags.Tag
|
|
alias Bright.Vtubers.Vtuber
|
|
alias Bright.Platforms.Platform
|
|
|
|
schema "streams" do
|
|
field :date, :utc_datetime
|
|
field :title, :string
|
|
field :notes, :string
|
|
|
|
|
|
many_to_many :tags, Tag, join_through: "streams_tags", on_replace: :delete
|
|
many_to_many :vtubers, Vtuber, join_through: "streams_vtubers", on_replace: :delete
|
|
many_to_many :platforms, Platform, join_through: "streams_platforms", on_replace: :delete
|
|
|
|
has_many :vods, Bright.Streams.Vod, on_replace: :delete
|
|
|
|
timestamps(type: :utc_datetime)
|
|
end
|
|
|
|
@doc false
|
|
def changeset(stream, attrs) do
|
|
stream
|
|
|> cast(attrs, [:title, :notes, :date])
|
|
|> validate_required([:title, :date])
|
|
end
|
|
end
|