class CreateLfsFileLocks < ActiveRecord::Migration[4.2]
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  disable_ddl_transaction!

  def up
    create_table :lfs_file_locks do |t|
      t.references :project, null: false, foreign_key: { on_delete: :cascade }
      t.references :user, null: false, index: true, foreign_key: { on_delete: :cascade }
      t.datetime :created_at, null: false
      t.string :path, limit: 511
    end

    add_index :lfs_file_locks, [:project_id, :path], unique: true
  end

  def down
    if foreign_keys_for(:lfs_file_locks, :project_id).any?
      remove_foreign_key :lfs_file_locks, column: :project_id
    end

    if index_exists?(:lfs_file_locks, [:project_id, :path])
      remove_concurrent_index :lfs_file_locks, [:project_id, :path]
    end

    drop_table :lfs_file_locks
  end
end
