Spec-Zone.ru › Phoenix

mix phx.gen.schema

Исходный код

Создаёт схему Ecto и миграцию.

$ mix phx.gen.schema Blog.Post blog_posts title:string views:integer

Первый аргумент — модуль схемы, за которым следует её имя во множественном числе (используемое в качестве имени таблицы).

Созданная выше схема будет содержать:

  • файл схемы в lib/my_app/blog/post.ex с таблицей blog_posts
  • файл миграции для репозитория

Создание миграции можно пропустить с помощью --no-migration.

Контексты

Схемы можно создать и добавить в отдельное приложение OTP. Убедитесь, что конфигурация настроена правильно, или укажите приложение контекста вручную с помощью параметра --context-app в CLI.

Через конфигурацию:

config :marketing_web, :generators, context_app: :marketing

Через CLI:

$ mix phx.gen.schema Blog.Post blog_posts title:string views:integer --context-app marketing

Атрибуты

Поля ресурса задаются с помощью синтаксиса name:type, где type — это типы, поддерживаемые Ecto. Если тип не указан, по умолчанию используется :string:

$ mix phx.gen.schema Blog.Post blog_posts title views:integer

Поддерживаются следующие типы:

  • :integer

  • :float

  • :decimal

  • :boolean

  • :map

  • :string

  • :array

  • :references

  • :text

  • :date

  • :time

  • :time_usec

  • :naive_datetime

  • :naive_datetime_usec

  • :utc_datetime

  • :utc_datetime_usec

  • :uuid

  • :binary

  • :enum

  • :datetime — псевдоним для :naive_datetime

Генератор также поддерживает ссылки: указанный столбец будет корректно связан со столбцом первичного ключа связанной таблицы:

$ mix phx.gen.schema Blog.Post blog_posts title user_id:references:users

В результате будет создана миграция со столбцом :integer типа :user_id и индексом.

Кроме того, можно указать тип массива, если он поддерживается вашей базой данных. При этом необходимо также указать тип элемента массива:

$ mix phx.gen.schema Blog.Post blog_posts tags:array:string

Столбцы с уникальными значениями можно создать автоматически с помощью:

$ mix phx.gen.schema Blog.Post blog_posts title:unique unique_int:integer:unique

Столбцы redact можно создать автоматически с помощью:

$ mix phx.gen.schema Accounts.Superhero superheroes secret_identity:redact password:string:redact

Поля Ecto.Enum можно создать с помощью:

$ mix phx.gen.schema Blog.Post blog_posts title status:enum:unpublished:published:deleted

Если тип данных не указан, по умолчанию используется строка.

table

По умолчанию в качестве имени таблицы для миграции и схемы используется указанное имя ресурса во множественном числе. Чтобы изменить это значение, можно указать параметр --table. Например:

$ mix phx.gen.schema Blog.Post posts --table cms_posts

binary_id

В созданной миграции можно использовать binary_id для первичного ключа схемы и её ссылок с параметром --binary-id.

primary_key

По умолчанию первичный ключ таблицы называется id. Этот параметр позволяет изменить имя столбца первичного ключа. Например:

$ mix phx.gen.schema Blog.post posts --primary-key post_id

repo

В созданной миграции можно использовать repo, чтобы задать папку репозитория миграций с помощью параметра --repo:

$ mix phx.gen.schema Blog.Post posts --repo MyApp.Repo.Auth

migration_dir

Созданные миграции можно поместить в определённый --migration-dir, задающий путь к папке миграций:

$ mix phx.gen.schema Blog.Post posts --migration-dir /path/to/directory

prefix

По умолчанию миграции и схемы создаются без префикса.

Для PostgreSQL это задаёт «SCHEMA» (обычно задаётся через search_path), а для MySQL — базу данных для созданной миграции и схемы. Префикс можно использовать для тематической организации таблиц на уровне базы данных.

Префикс можно указать с помощью флагов --prefix. Например:

$ mix phx.gen.schema Blog.Post posts --prefix blog

Предупреждение

Этот флаг не создаёт миграции для создания схемы / базы данных. Это необходимо сделать вручную или в отдельной миграции.

Параметры по умолчанию

Этот генератор использует параметры по умолчанию, заданные в конфигурации :generators вашего приложения. Значения по умолчанию:

config :your_app, :generators,
  migration: true,
  binary_id: false,
  timestamp_type: :naive_datetime,
  sample_binary_id: "11111111-1111-1111-1111-111111111111"

Эти параметры можно переопределить при каждом вызове, указав соответствующие флаги, например --no-binary-id, чтобы использовать обычные идентификаторы вопреки конфигурации по умолчанию, или --migration, чтобы принудительно создать миграцию.

Метки времени UTC

Если установить :timestamp_type в :utc_datetime, метки времени будут создаваться с использованием часового пояса UTC. В результате будет использоваться структура DateTime вместо NaiveDateTime. Для точности до микросекунд также можно установить значение :utc_datetime_usec.

Пакет Hex Предварительный просмотр Hex Скачать версию ePub

Создано с помощью ExDoc (v0.40.3) для языка программирования Elixir

© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix.hexdocs.pm/Mix.Tasks.Phx.Gen.Schema.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API