Packages
ecto
0.2.3
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
lib/ecto/exceptions.ex
alias Ecto.Query.Util
defmodule Ecto.QueryError do
defexception [:message, :type, :query, :file, :line]
def exception(opts) do
if opts[:type] && opts[:query] && opts[:file] && opts[:line] do
fl = Exception.format_file_line(opts[:file], opts[:line])
msg = "#{fl}: the query `#{opts[:type]}: #{Macro.to_string(opts[:query])}` " <>
"is invalid: #{opts[:reason]}"
opts = Keyword.put(opts, :message, msg)
else
opts = Keyword.put(opts, :message, opts[:reason])
end
struct(Ecto.QueryError, opts)
end
end
defmodule Ecto.InvalidURL do
defexception [:message, :url]
def exception(opts) do
msg = "invalid url #{opts[:url]}, #{opts[:reason]}"
%Ecto.InvalidURL{message: msg, url: opts[:url]}
end
end
defmodule Ecto.NoPrimaryKey do
defexception [:message, :model]
def exception(opts) do
msg = "model `#{opts[:model]}` has no primary key"
%Ecto.NoPrimaryKey{message: msg, model: opts[:model]}
end
end
defmodule Ecto.InvalidModel do
defexception [:model, :field, :type, :expected_type, :reason]
def message(e) do
expected_type = Util.type_to_ast(e.expected_type) |> Macro.to_string
type = Util.type_to_ast(e.type) |> Macro.to_string
"model #{inspect e.model} failed validation when #{e.reason}, " <>
"field #{e.field} had type #{type} but type #{expected_type} was expected"
end
end
defmodule Ecto.NotSingleResult do
defexception [:message, :model, :primary_key, :id, :results]
def exception(opts) do
msg = "the result set from `#{opts[:model]}` " <>
"where `#{opts[:primary_key]} == #{opts[:id]}` " <>
"was not a single value"
struct(Ecto.NotSingleResult, [message: msg] ++ opts)
end
end
defmodule Ecto.Query.TypeCheckError do
defexception [:expr, :types, :allowed]
@moduledoc """
Exception raised when a query does not type check.
Read `Ecto.Query` and `Ecto.Query.API` docs for more information.
"""
def message(e) do
{name, _, _} = e.expr
expected = Enum.map_join(e.allowed, "\n ", &Macro.to_string(&1))
types = Enum.map(e.types, &Util.type_to_ast/1)
actual = Macro.to_string({name, [], types})
"""
the following expression does not type check:
#{Macro.to_string(e.expr)}
Allowed types for #{name}/#{length(e.types)}:
#{expected}
Got: #{actual}
"""
end
end
defmodule Ecto.AssociationNotLoadedError do
defexception [:message, :type, :name, :owner]
def exception(opts) do
msg = "the #{opts[:type]} association on #{opts[:owner]}.#{opts[:name]} was not loaded"
struct(Ecto.AssociationNotLoadedError, [message: msg] ++ opts)
end
end
defmodule Ecto.MigrationError do
defexception [:message]
end