50 lines
1.1 KiB
Elixir
50 lines
1.1 KiB
Elixir
defmodule Entendu.Links.Link do
|
|
use Ecto.Schema
|
|
use Waffle.Ecto.Schema
|
|
alias Entendu.EncryptedLink
|
|
import Ecto.Changeset
|
|
|
|
@primary_key {:id, Ecto.UUID, autogenerate: true}
|
|
@derive {Jason.Encoder,
|
|
only: [
|
|
:burn_after_reading,
|
|
:expires,
|
|
:filename,
|
|
:filetype,
|
|
:text_content,
|
|
:file_content,
|
|
:recipient,
|
|
:service
|
|
]}
|
|
schema "links" do
|
|
field :burn_after_reading, :boolean, default: false
|
|
field :expires, :utc_datetime
|
|
field :filename, :string
|
|
field :filetype, :string
|
|
field :text_content, EncryptedLink.Type
|
|
field :file_content, EncryptedLink.Type
|
|
field :recipient, :string
|
|
field :service, :string
|
|
|
|
timestamps()
|
|
end
|
|
|
|
@doc false
|
|
def changeset(link, attrs) do
|
|
link
|
|
|> cast(attrs, [
|
|
:expires,
|
|
:burn_after_reading,
|
|
:filename,
|
|
:filetype,
|
|
:recipient,
|
|
:service
|
|
])
|
|
end
|
|
|
|
def file_changeset(link, attrs) do
|
|
link
|
|
|> cast_attachments(attrs, [:text_content, :file_content])
|
|
end
|
|
end
|