Типы Duration с Postgrex
Исходный кодНачиная с Ecto 3.12.0, Ecto поддерживает тип :duration, который сопоставляется со структурой Duration в Elixir (доступна начиная с Elixir 1.17).
Один из естественных вариантов использования — тип interval в Postgres. Исторически Postgrex загружает интервалы из базы данных в пользовательскую структуру Postgrex.Interval. С появлением Duration теперь можно выбрать один из двух вариантов. Выполните следующие шаги, чтобы включить сопоставление с Duration.
- Определите миграцию
create table("movies") do
add :running_time, :interval
end
- Определите схему
defmodule Movie do
use Ecto.Schema
schema "movies" do
field :running_time, :duration
end
end
- Определите пользовательский модуль типа Postgrex и укажите, что интервалы следует декодировать в
Duration
# Inside lib/my_app/postgrex_types.ex Postgrex.Types.define(MyApp.PostgrexTypes, [], interval_decode_type: Duration)
- Настройте Ecto, добавив модуль типа Postgrex в конфигурацию
config :my_app, MyApp.Repo, types: MyApp.PostgresTypes
© 2014 Chris McCord
Licensed under the MIT License.
https://ecto.hexdocs.pm/duration-types-with-postgrex.html