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
|