Packages
ecto
1.0.4
3.14.1
3.14.0
3.13.6
3.13.5
3.13.4
3.13.3
3.13.2
3.13.1
3.13.0
3.12.6
3.12.5
3.12.4
3.12.3
3.12.2
3.12.1
3.12.0
3.11.2
3.11.1
3.11.0
3.10.3
3.10.2
3.10.1
3.10.0
3.9.6
3.9.5
3.9.4
3.9.3
3.9.2
3.9.1
3.9.0
3.8.4
3.8.3
3.8.2
3.8.1
3.8.0
3.7.2
3.7.1
3.7.0
3.6.2
3.6.1
3.6.0
3.5.8
3.5.7
3.5.6
3.5.5
3.5.4
3.5.3
3.5.2
3.5.1
3.5.0
3.5.0-rc.1
3.5.0-rc.0
3.4.6
3.4.5
3.4.4
3.4.3
3.4.2
3.4.1
3.4.0
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.7
3.1.6
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.1
3.0.0-rc.0
2.2.12
2.2.11
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.2.0-rc.1
2.2.0-rc.0
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.1.0-rc.5
2.1.0-rc.4
2.1.0-rc.3
2.1.0-rc.2
2.1.0-rc.1
2.1.0-rc.0
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
2.0.0-rc.6
2.0.0-rc.5
2.0.0-rc.4
2.0.0-rc.3
2.0.0-rc.2
2.0.0-rc.1
2.0.0-rc.0
2.0.0-beta.2
2.0.0-beta.1
2.0.0-beta.0
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.16.0
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.12.0-rc
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
A toolkit for data mapping and language integrated query for Elixir
Current section
Files
Jump to
Current section
Files
integration_test/support/models.exs
defmodule Ecto.Integration.Model do
defmacro __using__(_) do
quote do
use Ecto.Model
type =
Application.get_env(:ecto, :primary_key_type) ||
raise ":primary_key_type not set in :ecto application"
@primary_key {:id, type, autogenerate: true}
@foreign_key_type type
end
end
def pdict_store(changeset, key, val) do
Process.put(key, val)
changeset
end
end
defmodule Ecto.Integration.Post do
@moduledoc """
This module is used to test:
* Overall functionality
* Overall types
* Non-null timestamps
* Relationships
* Dependent callbacks
"""
use Ecto.Integration.Model
schema "posts" do
field :counter, :id # Same as integer
field :title, :string
field :text, :binary
field :temp, :string, default: "temp", virtual: true
field :public, :boolean, default: true
field :cost, :decimal
field :visits, :integer
field :intensity, :float
field :bid, :binary_id
field :uuid, Ecto.UUID, autogenerate: true
field :meta, :map
field :posted, Ecto.Date
has_many :comments, Ecto.Integration.Comment, on_delete: :delete_all, on_replace: :delete
has_one :permalink, Ecto.Integration.Permalink, on_delete: :fetch_and_delete, on_replace: :delete
has_many :comments_authors, through: [:comments, :author]
belongs_to :author, Ecto.Integration.User
timestamps
end
def changeset(model, params) do
model
|> cast(params, [], ~w(counter title text temp public cost visits
intensity bid uuid meta posted))
end
end
defmodule Ecto.Integration.PostUsecTimestamps do
@moduledoc """
This module is used to test:
* Usec timestamps
"""
use Ecto.Integration.Model
schema "posts" do
field :title, :string
timestamps usec: true
end
end
defmodule Ecto.Integration.Comment do
@moduledoc """
This module is used to test:
* Optimistic lock
* Relationships
* Dependent callbacks
"""
use Ecto.Integration.Model
schema "comments" do
field :text, :string
field :lock_version, :integer, default: 1
belongs_to :post, Ecto.Integration.Post
belongs_to :author, Ecto.Integration.User
has_one :post_permalink, through: [:post, :permalink]
end
optimistic_lock :lock_version
before_delete Ecto.Integration.Model, :pdict_store, [__MODULE__, :on_delete]
end
defmodule Ecto.Integration.Permalink do
@moduledoc """
This module is used to test:
* Relationships
* Dependent callbacks
"""
use Ecto.Integration.Model
schema "permalinks" do
field :url, :string
belongs_to :post, Ecto.Integration.Post
belongs_to :user, Ecto.Integration.User
has_many :post_comments_authors, through: [:post, :comments_authors]
end
before_delete Ecto.Integration.Model, :pdict_store, [__MODULE__, :on_delete]
end
defmodule Ecto.Integration.User do
@moduledoc """
This module is used to test:
* Timestamps
* Relationships
* Dependent callbacks
"""
use Ecto.Integration.Model
schema "users" do
field :name, :string
has_many :comments, Ecto.Integration.Comment, foreign_key: :author_id, on_delete: :nilify_all
has_many :posts, Ecto.Integration.Post, foreign_key: :author_id, on_delete: :nothing, on_replace: :delete
has_many :permalinks, Ecto.Integration.Permalink
belongs_to :custom, Ecto.Integration.Custom, references: :bid, type: :binary_id
timestamps
end
end
defmodule Ecto.Integration.Custom do
@moduledoc """
This module is used to test:
* binary_id primary key
* Tying another schemas to an existing model
Due to the second item, it must be a subset of posts.
"""
use Ecto.Integration.Model
@primary_key {:bid, :binary_id, autogenerate: true}
schema "customs" do
field :uuid, Ecto.UUID
end
end
defmodule Ecto.Integration.Barebone do
@moduledoc """
This module is used to test:
* A model wthout primary keys
"""
use Ecto.Integration.Model
@primary_key false
schema "barebones" do
field :num, :integer
end
end
defmodule Ecto.Integration.Tag do
@moduledoc """
This module is used to test:
* The array type
* Embedding many models (uses array)
"""
use Ecto.Integration.Model
schema "tags" do
field :ints, {:array, :integer}
field :uuids, {:array, Ecto.UUID}
embeds_many :items, Ecto.Integration.Item
end
end
defmodule Ecto.Integration.Item do
@moduledoc """
This module is used to test:
* Embedding
"""
use Ecto.Integration.Model
embedded_schema do
field :price, :integer
field :valid_at, Ecto.Date
end
end
defmodule Ecto.Integration.Order do
@moduledoc """
This module is used to test:
* Embedding one model
"""
use Ecto.Integration.Model
schema "orders" do
embeds_one :item, Ecto.Integration.Item
end
end