class CreateGestaoDeEstoqueProgramaPorEscolas < ActiveRecord::Migration[5.2]
  def change
    create_table :gestao_de_estoque_programa_por_escolas do |t|
      t.bigint :escola_id
      t.bigint :programa_id
      t.date :data_inicial

      t.timestamps
    end

    create_table :gestao_de_estoque_programas_escolares do |t|
      t.bigint :acao_id
      t.string :nome
      t.date :data_inicial
      t.date :data_final

      t.timestamps
    end

    create_table :gestao_de_estoque_programas_por_almoxarifado_e_transferencia do |t|
      t.bigint :almoxarifado_id
      t.bigint :transferencia_id
      t.bigint :programa_por_escola_id

      t.timestamps
    end

    create_table :gestao_de_estoque_itens_do_programa_por_almoxarifado_e_transferencia do |t|
      t.bigint :programa_por_almoxarifado_e_transferencia_id
      t.bigint :item_id
      t.bigint :estoque_id
      t.bigint :item_da_transferencia_id
      t.decimal :quantidade

      t.timestamps
    end

    add_column :gestao_de_estoque_estoques, :programa_por_escola_id, :integer


    add_foreign_key :gestao_de_estoque_programa_por_escolas, :gestao_de_estoque_escolas, column: :escola_id, primary_key: :id
    add_foreign_key :gestao_de_estoque_programa_por_escolas, :gestao_de_estoque_programas_escolares, column: :programa_id, primary_key: :id
    
    add_foreign_key :gestao_de_estoque_programas_escolares, :loa_acoes, column: :acao_id, primary_key: :id
    
    add_foreign_key :gestao_de_estoque_programas_por_almoxarifado_e_transferencia, :gestao_de_estoque_almoxarifados, column: :almoxarifado_id, primary_key: :id
    add_foreign_key :gestao_de_estoque_programas_por_almoxarifado_e_transferencia, :gestao_de_estoque_transferencias, column: :transferencia_id, primary_key: :id
    add_foreign_key :gestao_de_estoque_programas_por_almoxarifado_e_transferencia, :gestao_de_estoque_programa_por_escolas, column: :programa_por_escola_id, primary_key: :id
    
    add_foreign_key :gestao_de_estoque_itens_do_programa_por_almoxarifado_e_transferencia, :gestao_de_estoque_programas_por_almoxarifado_e_transferencia, column: :programa_por_almoxarifado_e_transferencia_id, primary_key: :id
    add_foreign_key :gestao_de_estoque_itens_do_programa_por_almoxarifado_e_transferencia, :base_itens, column: :item_id, primary_key: :id
    add_foreign_key :gestao_de_estoque_itens_do_programa_por_almoxarifado_e_transferencia, :gestao_de_estoque_estoques, column: :estoque_id, primary_key: :id
    add_foreign_key :gestao_de_estoque_itens_do_programa_por_almoxarifado_e_transferencia, :gestao_de_estoque_itens_da_transferencia, column: :item_da_transferencia_id, primary_key: :id
    
    add_foreign_key :gestao_de_estoque_estoques, :gestao_de_estoque_programa_por_escolas, column: :programa_por_escola_id, primary_key: :id

  end
end
