/**
 * 为animals表添加缺失的字段
 */

module.exports = {
  up: async (queryInterface, Sequelize) => {
    const { DataTypes } = require('sequelize');

    // 添加项圈编号字段
    await queryInterface.addColumn('animals', 'collar_number', {
      type: DataTypes.STRING(50),
      allowNull: false,
      comment: '项圈编号'
    });

    // 添加动物耳号字段
    await queryInterface.addColumn('animals', 'ear_tag', {
      type: DataTypes.STRING(50),
      allowNull: true,
      comment: '动物耳号'
    });

    // 添加动物类型字段
    await queryInterface.addColumn('animals', 'animal_type', {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 1,
      comment: '动物类型：1-牛，2-羊，3-猪，4-马'
    });

    // 添加品种字段
    await queryInterface.addColumn('animals', 'breed', {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 1,
      comment: '品种：1-西藏高山牦牛，2-荷斯坦奶牛，3-西门塔尔牛，4-安格斯牛，5-小尾寒羊，6-波尔山羊'
    });

    // 添加品类字段
    await queryInterface.addColumn('animals', 'category', {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 1,
      comment: '品类：1-乳肉兼用，2-肉用，3-乳用，4-种用'
    });

    // 添加来源类型字段
    await queryInterface.addColumn('animals', 'source_type', {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 1,
      comment: '来源类型：1-合作社，2-农户，3-养殖场，4-进口'
    });

    // 添加出生日期字段
    await queryInterface.addColumn('animals', 'birth_date', {
      type: DataTypes.DATE,
      allowNull: true,
      comment: '出生日期'
    });

    // 添加出生体重字段
    await queryInterface.addColumn('animals', 'birth_weight', {
      type: DataTypes.DECIMAL(10, 2),
      allowNull: true,
      defaultValue: 0.00,
      comment: '出生体重'
    });

    // 添加断奶体重字段
    await queryInterface.addColumn('animals', 'weaning_weight', {
      type: DataTypes.DECIMAL(10, 2),
      allowNull: true,
      defaultValue: 0.00,
      comment: '断奶体重'
    });

    // 添加断奶日龄字段
    await queryInterface.addColumn('animals', 'weaning_age', {
      type: DataTypes.INTEGER,
      allowNull: true,
      defaultValue: 0,
      comment: '断奶日龄'
    });

    // 添加入场日期字段
    await queryInterface.addColumn('animals', 'entry_date', {
      type: DataTypes.DATE,
      allowNull: true,
      comment: '入场日期'
    });

    // 添加历史已产胎次字段
    await queryInterface.addColumn('animals', 'calving_count', {
      type: DataTypes.INTEGER,
      allowNull: true,
      defaultValue: 0,
      comment: '历史已产胎次'
    });

    // 添加乳头数(左)字段
    await queryInterface.addColumn('animals', 'left_teat_count', {
      type: DataTypes.INTEGER,
      allowNull: true,
      comment: '乳头数(左)'
    });

    // 添加乳头数(右)字段
    await queryInterface.addColumn('animals', 'right_teat_count', {
      type: DataTypes.INTEGER,
      allowNull: true,
      comment: '乳头数(右)'
    });

    console.log('✅ 成功为animals表添加缺失的字段');
  },

  down: async (queryInterface, Sequelize) => {
    // 删除添加的字段
    await queryInterface.removeColumn('animals', 'collar_number');
    await queryInterface.removeColumn('animals', 'ear_tag');
    await queryInterface.removeColumn('animals', 'animal_type');
    await queryInterface.removeColumn('animals', 'breed');
    await queryInterface.removeColumn('animals', 'category');
    await queryInterface.removeColumn('animals', 'source_type');
    await queryInterface.removeColumn('animals', 'birth_date');
    await queryInterface.removeColumn('animals', 'birth_weight');
    await queryInterface.removeColumn('animals', 'weaning_weight');
    await queryInterface.removeColumn('animals', 'weaning_age');
    await queryInterface.removeColumn('animals', 'entry_date');
    await queryInterface.removeColumn('animals', 'calving_count');
    await queryInterface.removeColumn('animals', 'left_teat_count');
    await queryInterface.removeColumn('animals', 'right_teat_count');

    console.log('✅ 成功回滚animals表字段添加操作');
  }
};