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.ex83
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