diff options
Diffstat (limited to 'lib/db/schema.ex')
| -rw-r--r-- | lib/db/schema.ex | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/lib/db/schema.ex b/lib/db/schema.ex new file mode 100644 index 0000000..860fc15 --- /dev/null +++ b/lib/db/schema.ex @@ -0,0 +1,83 @@ +defmodule Thulani.Schema do + alias Thulani.Schema + + defmodule Meme do + use Ecto.Schema + + schema "memes" do + has_many(:invocation_records, Schema.InvocationRecord) + + field(:title, :string) + field(:content, :string) + + has_one(:image, Image) + has_one(:audio, Audio) + + belongs_to(:metadata, Metadata) + end + end + + defmodule InvocationRecord do + use Ecto.Schema + + schema "invocation_records" do + field(:user_id, :integer) + field(:message_id, :integer) + field(:time, :utc_datetime) + field(:random, :boolean) + + belongs_to(:meme, Schema.Meme) + end + end + + defmodule Metadata do + use Ecto.Schema + + schema "metadata" do + has_one(:meme, Schema.Meme) + has_one(:audio, Schema.Audio) + has_one(:image, Schema.Image) + + field(:created, :utc_datetime) + field(:created_by, :integer) + end + end + + defmodule Audio do + use Ecto.Schema + + schema "audio" do + belongs_to(:metadata, Schema.Metadata) + belongs_to(:meme, Schema.Meme) + + field(:data, :binary) + field(:data_hash, :binary) + end + end + + defmodule Image do + use Ecto.Schema + + schema "images" do + belongs_to(:metadata, Schema.Metadata) + belongs_to(:meme, Schema.Meme) + + field(:data, :binary) + field(:data_hash, :binary) + field(:filename, :string) + end + end + + defmodule Tombstone do + use Ecto.Schema + + schema "tombstones" do + field(:meme_id, :integer) + + field(:deleted_by, :integer) + field(:deleted_at, :utc_datetime) + + has_one(:metadata, Schema.Metadata) + end + end +end |
