Packages
ecto
3.13.1
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
mix.exs
defmodule Ecto.MixProject do
use Mix.Project
@source_url "https://github.com/elixir-ecto/ecto"
@version "3.13.1"
def project do
[
app: :ecto,
version: @version,
elixir: "~> 1.14",
deps: deps(),
consolidate_protocols: Mix.env() != :test,
elixirc_paths: elixirc_paths(Mix.env()),
# Hex
description: "A toolkit for data mapping and language integrated query for Elixir",
package: package(),
# Docs
name: "Ecto",
docs: docs()
]
end
def application do
[
extra_applications: [:logger, :crypto, :eex],
mod: {Ecto.Application, []}
]
end
defp deps do
[
{:telemetry, "~> 0.4 or ~> 1.0"},
{:decimal, "~> 2.0"},
{:jason, "~> 1.0", optional: true},
{:ex_doc, "~> 0.20", only: :docs}
]
end
defp package do
[
maintainers: ["Eric Meadows-Jönsson", "José Valim", "Felipe Stival", "Greg Rychlewski"],
licenses: ["Apache-2.0"],
links: %{"GitHub" => @source_url},
files:
~w(.formatter.exs mix.exs README.md CHANGELOG.md lib) ++
~w(integration_test/cases integration_test/support)
]
end
defp docs do
[
main: "Ecto",
source_ref: "v#{@version}",
logo: "guides/images/e.png",
extra_section: "GUIDES",
source_url: @source_url,
skip_undefined_reference_warnings_on: ["CHANGELOG.md"],
extras: extras(),
groups_for_extras: groups_for_extras(),
groups_for_docs: [
group_for_function("Query API"),
group_for_function("Schema API"),
group_for_function("Transaction API"),
group_for_function("Process API"),
group_for_function("Config API"),
group_for_function("User callbacks")
],
groups_for_modules: [
# Ecto,
# Ecto.Changeset,
# Ecto.Multi,
# Ecto.Query,
# Ecto.Repo,
# Ecto.Schema,
# Ecto.Schema.Metadata,
# Mix.Ecto,
Types: [
Ecto.Enum,
Ecto.ParameterizedType,
Ecto.Type,
Ecto.UUID
],
"Query APIs": [
Ecto.Query.API,
Ecto.Query.WindowAPI,
Ecto.Queryable,
Ecto.SubQuery
],
"Adapter specification": [
Ecto.Adapter,
Ecto.Adapter.Queryable,
Ecto.Adapter.Schema,
Ecto.Adapter.Storage,
Ecto.Adapter.Transaction
],
"Relation structs": [
Ecto.Association.BelongsTo,
Ecto.Association.Has,
Ecto.Association.HasThrough,
Ecto.Association.ManyToMany,
Ecto.Association.NotLoaded,
Ecto.Embedded
]
],
before_closing_body_tag: fn
:html ->
"""
<script src="https://cdn.jsdelivr.net/npm/mermaid@10.2.3/dist/mermaid.min.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
mermaid.initialize({
startOnLoad: false,
theme: document.body.className.includes("dark") ? "dark" : "default"
});
let id = 0;
for (const codeEl of document.querySelectorAll("pre code.mermaid")) {
const preEl = codeEl.parentElement;
const graphDefinition = codeEl.textContent;
const graphEl = document.createElement("div");
const graphId = "mermaid-graph-" + id++;
mermaid.render(graphId, graphDefinition).then(({svg, bindFunctions}) => {
graphEl.innerHTML = svg;
bindFunctions?.(graphEl);
preEl.insertAdjacentElement("afterend", graphEl);
preEl.remove();
});
}
});
</script>
"""
_ ->
""
end
]
end
def extras() do
[
"guides/introduction/Getting Started.md",
"guides/howtos/Aggregates and subqueries.md",
"guides/howtos/Constraints and Upserts.md",
"guides/howtos/Data mapping and validation.md",
"guides/howtos/Duration Types with Postgrex.md",
"guides/howtos/Dynamic queries.md",
"guides/howtos/Embedded Schemas.md",
"guides/howtos/Multi tenancy with query prefixes.md",
"guides/howtos/Multi tenancy with foreign keys.md",
"guides/howtos/Self-referencing many to many.md",
"guides/howtos/Polymorphic associations with many to many.md",
"guides/howtos/Replicas and dynamic repositories.md",
"guides/howtos/Schemaless queries.md",
"guides/howtos/Test factories.md",
"guides/testing/Testing with Ecto.md",
"guides/cheatsheets/crud.cheatmd",
"guides/cheatsheets/associations.cheatmd",
"CHANGELOG.md"
]
end
defp group_for_function(group), do: {String.to_atom(group), &(&1[:group] == group)}
defp groups_for_extras do
[
Introduction: ~r/guides\/introduction\/.?/,
Cheatsheets: ~r/cheatsheets\/.?/,
"How-To's": ~r/guides\/howtos\/.?/,
Testing: ~r/testing\/.?/
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
end