aboutsummaryrefslogtreecommitdiff
path: root/lib/db/schema.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/db/schema.ex')
-rw-r--r--lib/db/schema.ex55
1 files changed, 46 insertions, 9 deletions
diff --git a/lib/db/schema.ex b/lib/db/schema.ex
index 860fc15..ec6f4e5 100644
--- a/lib/db/schema.ex
+++ b/lib/db/schema.ex
@@ -1,5 +1,6 @@
defmodule Thulani.Schema do
alias Thulani.Schema
+ import Ecto.Changeset
defmodule Meme do
use Ecto.Schema
@@ -10,10 +11,24 @@ defmodule Thulani.Schema do
field(:title, :string)
field(:content, :string)
- has_one(:image, Image)
- has_one(:audio, Audio)
+ belongs_to(:image, Schema.Image)
+ belongs_to(:audio, Schema.Audio)
- belongs_to(:metadata, Metadata)
+ belongs_to(:metadata, Schema.Metadata)
+ end
+
+ def insert_changeset(params \\ %{}) do
+ changeset(%Meme{}, params)
+ end
+
+ def changeset(meme, params \\ %{}) do
+ meme
+ |> cast(params, [:title, :content, :image_id, :audio_id])
+ |> validate_required([:title])
+ |> cast_assoc(:image)
+ |> cast_assoc(:audio)
+ |> cast_assoc(:metadata, required: true)
+ |> unique_constraint(:title, name: :text_memes_title_key)
end
end
@@ -23,7 +38,7 @@ defmodule Thulani.Schema do
schema "invocation_records" do
field(:user_id, :integer)
field(:message_id, :integer)
- field(:time, :utc_datetime)
+ field(:time, :utc_datetime_usec)
field(:random, :boolean)
belongs_to(:meme, Schema.Meme)
@@ -38,9 +53,15 @@ defmodule Thulani.Schema do
has_one(:audio, Schema.Audio)
has_one(:image, Schema.Image)
- field(:created, :utc_datetime)
+ field(:created, :utc_datetime_usec)
field(:created_by, :integer)
end
+
+ def changeset(meta, params \\ %{}) do
+ meta
+ |> cast(params, [:created, :created_by])
+ |> validate_required([:created, :created_by])
+ end
end
defmodule Audio do
@@ -48,11 +69,19 @@ defmodule Thulani.Schema do
schema "audio" do
belongs_to(:metadata, Schema.Metadata)
- belongs_to(:meme, Schema.Meme)
+ has_many(:memes, Schema.Meme)
field(:data, :binary)
field(:data_hash, :binary)
end
+
+ def changeset(image, params \\ %{}) do
+ image
+ |> cast(params, [:data, :data_hash])
+ |> cast_assoc(:metadata, required: true)
+ |> validate_required([:data, :data_hash])
+ |> unique_constraint(:data_hash, name: :image_hash)
+ end
end
defmodule Image do
@@ -60,12 +89,20 @@ defmodule Thulani.Schema do
schema "images" do
belongs_to(:metadata, Schema.Metadata)
- belongs_to(:meme, Schema.Meme)
+ has_many(:memes, Schema.Meme)
field(:data, :binary)
field(:data_hash, :binary)
field(:filename, :string)
end
+
+ def changeset(image, params \\ %{}) do
+ image
+ |> cast(params, [:data, :data_hash, :filename])
+ |> cast_assoc(:metadata, required: true)
+ |> validate_required([:data, :data_hash, :filename])
+ |> unique_constraint(:data_hash, name: :image_hash)
+ end
end
defmodule Tombstone do
@@ -75,9 +112,9 @@ defmodule Thulani.Schema do
field(:meme_id, :integer)
field(:deleted_by, :integer)
- field(:deleted_at, :utc_datetime)
+ field(:deleted_at, :utc_datetime_usec)
- has_one(:metadata, Schema.Metadata)
+ belongs_to(:metadata, Schema.Metadata)
end
end
end