166 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
defmodule Ecto.Integration.Migration do
 | 
						|
  use Ecto.Migration
 | 
						|
 | 
						|
  def change do
 | 
						|
    # IO.puts "TESTING MIGRATION LOCK"
 | 
						|
    # Process.sleep(10000)
 | 
						|
 | 
						|
    create table(:users, comment: "users table") do
 | 
						|
      add :name, :string, comment: "name column"
 | 
						|
      add :custom_id, :uuid
 | 
						|
      timestamps()
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:posts) do
 | 
						|
      add :title, :string, size: 100
 | 
						|
      add :counter, :integer
 | 
						|
      add :blob, :binary
 | 
						|
      add :bid, :binary_id
 | 
						|
      add :uuid, :uuid
 | 
						|
      add :meta, :map
 | 
						|
      add :links, {:map, :string}
 | 
						|
      add :intensities, {:map, :float}
 | 
						|
      add :public, :boolean
 | 
						|
      add :cost, :decimal, precision: 2, scale: 1
 | 
						|
      add :visits, :integer
 | 
						|
      add :wrapped_visits, :integer
 | 
						|
      add :intensity, :float
 | 
						|
      add :author_id, :integer
 | 
						|
      add :posted, :date
 | 
						|
      add :read_only, :string
 | 
						|
      timestamps(null: true)
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:posts_users, primary_key: false) do
 | 
						|
      add :post_id, references(:posts)
 | 
						|
      add :user_id, references(:users)
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:posts_users_pk) do
 | 
						|
      add :post_id, references(:posts)
 | 
						|
      add :user_id, references(:users)
 | 
						|
      timestamps()
 | 
						|
    end
 | 
						|
 | 
						|
    # Add a unique index on uuid. We use this
 | 
						|
    # to verify the behaviour that the index
 | 
						|
    # only matters if the UUID column is not NULL.
 | 
						|
    create unique_index(:posts, [:uuid], comment: "posts index")
 | 
						|
 | 
						|
    create table(:permalinks) do
 | 
						|
      add :uniform_resource_locator, :string
 | 
						|
      add :title, :string
 | 
						|
      add :post_id, references(:posts)
 | 
						|
      add :user_id, references(:users)
 | 
						|
    end
 | 
						|
 | 
						|
    create unique_index(:permalinks, [:post_id])
 | 
						|
    create unique_index(:permalinks, [:uniform_resource_locator])
 | 
						|
 | 
						|
    create table(:comments) do
 | 
						|
      add :text, :string, size: 100
 | 
						|
      add :lock_version, :integer, default: 1
 | 
						|
      add :post_id, references(:posts)
 | 
						|
      add :author_id, references(:users)
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:customs, primary_key: false) do
 | 
						|
      add :bid, :binary_id, primary_key: true
 | 
						|
      add :uuid, :uuid
 | 
						|
    end
 | 
						|
 | 
						|
    create unique_index(:customs, [:uuid])
 | 
						|
 | 
						|
    create table(:customs_customs, primary_key: false) do
 | 
						|
      add :custom_id1, references(:customs, column: :bid, type: :binary_id)
 | 
						|
      add :custom_id2, references(:customs, column: :bid, type: :binary_id)
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:barebones) do
 | 
						|
      add :num, :integer
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:transactions) do
 | 
						|
      add :num, :integer
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:lock_counters) do
 | 
						|
      add :count, :integer
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:orders) do
 | 
						|
      add :item, :map
 | 
						|
      add :items, :map
 | 
						|
      add :meta, :map
 | 
						|
      add :permalink_id, references(:permalinks)
 | 
						|
    end
 | 
						|
 | 
						|
    unless :array_type in ExUnit.configuration()[:exclude] do
 | 
						|
      create table(:tags) do
 | 
						|
        add :ints,  {:array, :integer}
 | 
						|
        add :uuids, {:array, :uuid}, default: []
 | 
						|
        add :items, {:array, :map}
 | 
						|
      end
 | 
						|
 | 
						|
      create table(:array_loggings) do
 | 
						|
        add :uuids, {:array, :uuid}, default: []
 | 
						|
        timestamps()
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    unless :bitstring_type in ExUnit.configuration()[:exclude] do
 | 
						|
      create table(:bitstrings) do
 | 
						|
        add :bs,  :bitstring
 | 
						|
        add :bs_with_default, :bitstring, default: <<42::6>>
 | 
						|
        add :bs_with_size, :bitstring, size: 10
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    if Code.ensure_loaded?(Duration) do
 | 
						|
      unless :duration_type in ExUnit.configuration()[:exclude] do
 | 
						|
        create table(:durations) do
 | 
						|
          add :dur, :duration
 | 
						|
          add :dur_with_fields, :duration, fields: "MONTH"
 | 
						|
          add :dur_with_precision, :duration, precision: 4
 | 
						|
          add :dur_with_fields_and_precision, :duration, fields: "HOUR TO SECOND", precision: 1
 | 
						|
          add :dur_with_default, :duration, default: "10 MONTH"
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:composite_pk, primary_key: false) do
 | 
						|
      add :a, :integer, primary_key: true
 | 
						|
      add :b, :integer, primary_key: true
 | 
						|
      add :name, :string
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:corrupted_pk, primary_key: false) do
 | 
						|
      add :a, :string
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:posts_users_composite_pk) do
 | 
						|
      add :post_id, references(:posts), primary_key: true
 | 
						|
      add :user_id, references(:users), primary_key: true
 | 
						|
      timestamps()
 | 
						|
    end
 | 
						|
 | 
						|
    create unique_index(:posts_users_composite_pk, [:post_id, :user_id])
 | 
						|
 | 
						|
    create table(:usecs) do
 | 
						|
      add :naive_datetime_usec, :naive_datetime_usec
 | 
						|
      add :utc_datetime_usec, :utc_datetime_usec
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:bits) do
 | 
						|
      add :bit, :bit
 | 
						|
    end
 | 
						|
 | 
						|
    create table(:loggings, primary_key: false) do
 | 
						|
      add :bid, :binary_id, primary_key: true
 | 
						|
      add :int, :integer
 | 
						|
      add :uuid, :uuid
 | 
						|
      timestamps()
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |