const { DataTypes, Sequelize } = require('sequelize');

module.exports = (sequelize) => {
  const HarmlessRegistration = sequelize.define('HarmlessRegistration', {
    id: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
      primaryKey: true,
      allowNull: false
    },
    registrationNumber: {
      type: DataTypes.STRING(50),
      allowNull: false,
      unique: true,
      comment: '登记编号'
    },
    animalType: {
      type: DataTypes.STRING(50),
      allowNull: false,
      comment: '动物类型'
    },
    quantity: {
      type: DataTypes.INTEGER,
      allowNull: false,
      comment: '数量',
      validate: {
        min: 1
      }
    },
    reason: {
      type: DataTypes.TEXT,
      allowNull: false,
      comment: '无害化处理原因'
    },
    processingMethod: {
      type: DataTypes.STRING(100),
      allowNull: false,
      comment: '处理方式'
    },
    processingPlace: {
      type: DataTypes.STRING(100),
      allowNull: false,
      comment: '处理场所'
    },
    processingDate: {
      type: DataTypes.DATEONLY,
      allowNull: false,
      comment: '处理日期'
    },
    registrant: {
      type: DataTypes.STRING(50),
      allowNull: false,
      comment: '登记人'
    },
    status: {
      type: DataTypes.ENUM('待处理', '处理中', '已完成', '已取消'),
      allowNull: false,
      defaultValue: '待处理',
      comment: '状态'
    },
    createTime: {
      type: DataTypes.DATE,
      defaultValue: Sequelize.fn('NOW'),
      allowNull: false,
      comment: '创建时间'
    },
    updateTime: {
      type: DataTypes.DATE,
      defaultValue: Sequelize.fn('NOW'),
      allowNull: false,
      comment: '更新时间'
    }
  }, {
    tableName: 'government_harmless_registrations',
    timestamps: false,
    indexes: [
      { name: 'idx_registrationNumber', fields: ['registrationNumber'] },
      { name: 'idx_status', fields: ['status'] },
      { name: 'idx_processingDate', fields: ['processingDate'] }
    ],
    comment: '无害化登记管理表'
  });

  return HarmlessRegistration;
};