/**
 * 设备管理模块 Swagger 文档
 * @file swagger-devices.js
 * @description 设备管理相关的 Swagger API 文档定义
 */

// 设备管理相关的 API 路径定义
const devicesPaths = {
  '/api/devices': {
    get: {
      summary: '获取所有设备',
      tags: ['设备管理'],
      parameters: [
        { $ref: '#/components/parameters/PageParam' },
        { $ref: '#/components/parameters/LimitParam' },
        { $ref: '#/components/parameters/SearchParam' }
      ],
      responses: {
        200: { $ref: '#/components/responses/Success' }
      }
    },
    post: {
      summary: '创建设备',
      tags: ['设备管理'],
      requestBody: {
        required: true,
        content: {
          'application/json': {
            schema: { $ref: '#/components/schemas/DeviceInput' }
          }
        }
      },
      responses: {
        201: { $ref: '#/components/responses/Created' },
        400: { $ref: '#/components/responses/BadRequest' }
      }
    }
  },
  '/api/devices/{id}': {
    get: {
      summary: '根据ID获取设备',
      tags: ['设备管理'],
      parameters: [{ $ref: '#/components/parameters/IdParam' }],
      responses: {
        200: { $ref: '#/components/responses/Success' },
        404: { $ref: '#/components/responses/NotFound' }
      }
    },
    put: {
      summary: '更新设备信息',
      tags: ['设备管理'],
      parameters: [{ $ref: '#/components/parameters/IdParam' }],
      requestBody: {
        required: true,
        content: {
          'application/json': {
            schema: { $ref: '#/components/schemas/DeviceInput' }
          }
        }
      },
      responses: {
        200: { $ref: '#/components/responses/Success' },
        404: { $ref: '#/components/responses/NotFound' }
      }
    },
    delete: {
      summary: '删除设备',
      tags: ['设备管理'],
      parameters: [{ $ref: '#/components/parameters/IdParam' }],
      responses: {
        200: { $ref: '#/components/responses/Success' },
        404: { $ref: '#/components/responses/NotFound' }
      }
    }
  },
  '/api/devices/stats/status': {
    get: {
      summary: '获取设备状态统计',
      tags: ['设备管理'],
      responses: {
        200: { $ref: '#/components/responses/Success' }
      }
    }
  },
  '/api/devices/stats/type': {
    get: {
      summary: '获取设备类型统计',
      tags: ['设备管理'],
      responses: {
        200: { $ref: '#/components/responses/Success' }
      }
    }
  }
};

// 设备管理相关的数据模型定义
const devicesSchemas = {
  Device: {
    type: 'object',
    properties: {
      id: { type: 'integer', description: '设备ID' },
      deviceId: { type: 'string', description: '设备编号' },
      name: { type: 'string', description: '设备名称' },
      type: { type: 'string', description: '设备类型' },
      status: { type: 'string', enum: ['online', 'offline', 'fault'], description: '设备状态' },
      batteryLevel: { type: 'integer', description: '电池电量' },
      location: { type: 'string', description: '位置信息' },
      farmId: { type: 'integer', description: '养殖场ID' },
      animalId: { type: 'integer', description: '绑定的动物ID' },
      createdAt: { type: 'string', format: 'date-time', description: '创建时间' },
      updatedAt: { type: 'string', format: 'date-time', description: '更新时间' }
    }
  },
  DeviceInput: {
    type: 'object',
    required: ['deviceId', 'name', 'type'],
    properties: {
      deviceId: { type: 'string', description: '设备编号' },
      name: { type: 'string', description: '设备名称' },
      type: { type: 'string', description: '设备类型' },
      farmId: { type: 'integer', description: '养殖场ID' },
      animalId: { type: 'integer', description: '绑定的动物ID' }
    }
  }
};

module.exports = {
  devicesPaths,
  devicesSchemas
};

