frenzy/lib/frenzy/item.ex

59 lines
1.4 KiB
Elixir
Raw Normal View History

2019-02-11 22:22:35 +00:00
defmodule Frenzy.Item do
use Ecto.Schema
import Ecto.Changeset
2019-03-31 14:52:56 +00:00
alias FrenzyWeb.Router.Helpers, as: Routes
alias FrenzyWeb.Endpoint
2019-02-11 22:22:35 +00:00
def to_fever(item) do
%{
id: item.id,
feed_id: item.feed_id,
title: item.title,
author: item.creator,
html: item.content,
url: item.url,
is_saved: 0,
2019-03-11 02:23:28 +00:00
is_read: if(item.read, do: 1, else: 0),
2019-02-11 22:22:35 +00:00
created_on_time: Timex.to_unix(item.date)
}
end
2019-03-31 14:52:56 +00:00
def to_fervor(item) do
%{
id: item.id,
feed_id: item.feed_id,
title: item.title,
author: item.creator,
created_at: DateTime.to_iso8601(item.date),
content: item.content,
url: item.url,
service_url:
Application.get_env(:frenzy, :base_url) <> Routes.item_path(Endpoint, :show, item.id),
read: item.read
}
end
2019-02-11 22:22:35 +00:00
schema "items" do
field :content, :string
field :date, :utc_datetime
field :creator, :string
field :guid, :string
field :url, :string
field :read, :boolean, default: false
field :read_date, :utc_datetime
field :title, :string
2019-03-14 23:48:46 +00:00
field :tombstone, :boolean, default: false
2019-02-11 22:22:35 +00:00
belongs_to :feed, Frenzy.Feed
timestamps()
end
@doc false
def changeset(item, attrs) do
item
2019-03-14 23:48:46 +00:00
|> cast(attrs, [:guid, :title, :url, :creator, :date, :content, :read, :read_date, :tombstone])
2019-02-11 22:22:35 +00:00
|> validate_required([:guid, :title, :url, :date, :content, :feed])
end
end