Γρήγορη αναφορά

Φύλλο οδηγιών Phoenix Ecto Migrations

Γρήγορος οδηγός αναφοράς για μεταναστεύσεις Ecto στο Phoenix: δημιουργία πινάκων, τύποι στηλών, ξένα κλειδιά, δείκτες και εκτέλεση SQL.

· Δημοσιεύτηκε

Το Ecto.Migration παρέχει μια ανεξάρτητη από τη βάση δεδομένων DSL για τη σύνταξη μεταναστεύσεων.

Εντολές CLI μετανάστευσης (CLI Migration Commands)

# Δημιουργια αρχειου μεταναστευσης
mix ecto.gen.migration add_status_to_orders

# Εκτελεση εκκρεμων μεταναστευσεων
mix ecto.migrate

# Ανακληση τελευταιας μεταναστευσης
mix ecto.rollback

# Ελεγχος καταστασης μεταναστευσεων
mix ecto.migrations

DSL ορισμού πίνακα (Table Definition DSL)

defmodule MyApp.Repo.Migrations.CreateDocuments do
  use Ecto.Migration

  def change do
    create table(:documents) do
      add :title, :string, size: 100, null: false
      add :body, :text
      add :price, :decimal, precision: 10, scale: 2
      add :views, :integer, default: 0
      add :active, :boolean, default: true, null: false
      add :metadata, :map # JSON / JSONB
      add :published_at, :utc_datetime

      # Αναφορα ξενου κλειδιου
      add :author_id, references(:users, on_delete: :delete_all), null: false

      # Προσθηκη inserted_at και updated_at
      timestamps()
    end
  end
end

Τροποποίηση υπαρχόντων πινάκων (alter)

alter table(:documents) do
  add :subtitle, :string
  modify :title, :string, size: 255
  remove :views
end

Δείκτες και περιορισμοί (Indices & Constraints)

# Μοναδικος δεικτης
create unique_index(:users, [:email])

# Συνθετος δεικτης
create index(:orders, [:user_id, :status], concurrently: true)

# Διαγραφη δεικτη
drop index(:orders, [:status])

Εκτέλεση ακατέργαστου SQL (Raw SQL)

# Εκτελεση εντολων SQL εντος της μεταναστευσης
execute "CREATE EXTENSION IF NOT EXISTS citext;"

Σχετικές αναφορές

Σχετικά θέματα