const sequelize = require('../config/database');
const Department = require('../models/Department');
const Position = require('../models/Position');

// 测试数据
const departments = [
  {
    name: '防疫部门',
    description: '负责动物防疫工作的部门',
    positions: [
      { name: '防疫员', has_permission: true, permission_details: { basic: ['view', 'edit'], advanced: ['delete'] } },
      { name: '防疫管理员', has_permission: true, permission_details: { basic: ['view', 'edit', 'add', 'delete'], advanced: ['admin'] } }
    ]
  },
  {
    name: '检疫部门',
    description: '负责动物检疫工作的部门',
    positions: [
      { name: '检疫员', has_permission: false, permission_details: null }
    ]
  },
  {
    name: '冷配管理部门',
    description: '负责动物冷配管理工作的部门',
    positions: [
      { name: '冷配员', has_permission: true, permission_details: { basic: ['view', 'edit'], advanced: [] } }
    ]
  },
  {
    name: '测试部门',
    description: '用于系统测试的部门',
    positions: [
      { name: '内部测试账号', has_permission: true, permission_details: { basic: ['view', 'edit', 'add', 'delete'], advanced: ['admin', 'debug'] } }
    ]
  }
];

// 初始化数据库表并插入测试数据
async function seedDatabase() {
  try {
    console.log('开始同步数据库表结构...');
    // 同步数据库表结构
    await sequelize.sync({ alter: true });
    console.log('数据库表结构同步完成！');

    console.log('开始插入测试数据...');
    
    // 逐个创建部门及其岗位
    for (const deptData of departments) {
      // 创建部门
      const department = await Department.create({
        name: deptData.name,
        description: deptData.description,
        created_by: 1,
        updated_by: 1
      });
      
      console.log(`已创建部门: ${department.name}`);
      
      // 创建该部门下的岗位
      for (const posData of deptData.positions) {
        const position = await Position.create({
          department_id: department.id,
          name: posData.name,
          has_permission: posData.has_permission,
          permission_details: posData.permission_details,
          created_by: 1,
          updated_by: 1
        });
        
        console.log(`  - 已创建岗位: ${position.name} (权限: ${position.has_permission ? '已设置' : '未设置'})`);
      }
    }
    
    console.log('测试数据插入完成！');
  } catch (error) {
    console.error('数据库初始化失败:', error);
    process.exit(1);
  } finally {
    // 关闭数据库连接
    await sequelize.close();
  }
}

// 执行播种函数
seedDatabase();