// 分类属性相关API服务
import api from './apiService'

/**
 * 分类属性服务类
 */
class CategoryAttributeService {
  /**
   * 获取所有分类属性
   * @returns {Promise<import('../types').ApiResponse<import('../types').CategoryAttribute[]>>}
   */
  getAllAttributes() {
    return api.get('/category-attributes')
  }

  /**
   * 根据ID获取分类属性
   * @param {number} attributeid - 属性ID  
   * @returns {Promise<import('../types').ApiResponse<import('../types').CategoryAttribute>>}
   */
  getAttributeById(attributeid) {
    return api.get(`/category-attributes/${attributeid}`)
  }

  /**
   * 根据分类ID获取属性列表
   * @param {number} categoryid - 分类ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').CategoryAttribute[]>>}
   */
  getAttributesByCategory(categoryid) {
    return api.get(`/category-attributes/category/${categoryid}`)
  }

  /**
   * 创建分类属性
   * @param {import('../types').CategoryAttributeDto} attributeData - 属性数据
   * @returns {Promise<import('../types').ApiResponse<import('../types').CategoryAttribute>>}
   */
  createAttribute(attributeData) {
    return api.post('/category-attributes', attributeData)
  }

  /**
   * 更新分类属性
   * @param {number} attributeid - 属性ID
   * @param {import('../types').CategoryAttributeDto} attributeData - 属性数据
   * @returns {Promise<import('../types').ApiResponse<import('../types').CategoryAttribute>>}
   */
  updateAttribute(attributeid, attributeData) {
    return api.put(`/category-attributes/${attributeid}`, attributeData)
  }

  /**
   * 删除分类属性
   * @param {number} attributeid - 属性ID
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   */
  deleteAttribute(attributeid) {
    return api.delete(`/category-attributes/${attributeid}`)
  }

  /**
   * 检查分类下是否存在指定名称的属性
   * @param {number} categoryid - 分类ID
   * @param {string} attributename - 属性名称
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   */
  checkAttributeExists(categoryid, attributename) {
    return api.get(`/category-attributes/check-exists?categoryid=${categoryid}&attributename=${encodeURIComponent(attributename)}`)
  }
}

// 创建并导出服务实例
const categoryAttributeService = new CategoryAttributeService()
export default categoryAttributeService

// 导出服务类供特殊场景使用
export { CategoryAttributeService }