// 文章相关API服务
import api from './apiService'

/**
 * 文章服务类
 */
class ArticleService {
  /**
   * 分页查询文章列表
   * @param {import('../types').PaginationParams} params - 分页查询参数
    * @param status 文章状态（0：未发表 1：已发表 2：已删除）
    * @param page 页码，从0开始（可选，默认为0）
    * @param size 每页大小（可选，默认为10，最大为100）
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getArticles(params = {}) {
    return api.get(`/articles/status/page/${params.status}/${params.page}/${params.size}`, { params })
  }

  /**
   * 获取已发布文章列表
   * @param {import('../types').PaginationParams} params - 查询参数
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getAllArticles(params = {}) {
    return api.get('/articles/published', { params })
  }
  /**
   * 根据状态获取文章列表
   * @param {number} status - 文章状态（0：未发表 1：已发表 2：已删除）
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getArticlesByStatus(status) {
    return api.get(`/articles/status/${status}`)
  }
  /**
   * 获取所有文章列表（包含已删除）
   * @param {import('../types').PaginationParams} params - 查询参数
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getAllArticlesWithDeleted(params = {}) {
    return api.get('/articles', { params })
  }
  /**
   * 根据ID获取文章详情
   * @param {number} articleid - 文章ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article>>}
   */
  getArticleById(articleid) {
    return api.get(`/articles/${articleid}`)
  }

  /**
   * 根据属性ID获取文章列表
   * @param {number} attributeid - 属性ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getArticlesByAttributeId(attributeid) {
    return api.get(`/articles/attribute/${attributeid}`)
  }

  /**
   * 根据标题查询文章列表
   * @param {string} title - 文章标题
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getArticlesByTitle(title) {
    return api.get(`/articles/title/${title}`)
  }

  /**
   * 获取热门文章
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getPopularArticles() {
    return api.get('/articles/popular')
  }

  /**
   * 创建文章
   * @param {import('../types').ArticleDto} articleData - 文章数据
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article>>}
   */
  createArticle(articleData) {
    return api.post('/articles', articleData)
  }

  /**
   * 更新文章
   * @param {number} articleid - 文章ID
   * @param {import('../types').ArticleDto} articleData - 文章数据
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article>>}
   */
  updateArticle(articleid, articleData) {
    return api.put(`/articles/${articleid}`, articleData)
  }

  /**
   * 删除文章
   * @param {number} articleid - 文章ID
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   */
  deleteArticle(articleid) {
    return api.delete(`/articles/${articleid}`)
  }

  /**
   * 根据分类获取文章
   * @param {number} categoryid - 分类ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getArticlesByCategory(categoryid) {
    return api.get(`/articles/category/${categoryid}`)
  }

  /**
   * 增加文章浏览量
   * @param {number} articleid - 文章ID
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   */
  incrementArticleViews(articleid) {
    return api.post(`/articles/view/${articleid}`)
  }

  /**
   * 根据属性ID获取最新文章
   * @param {number} attributeid - 属性ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Article[]>>}
   */
  getLatestArticlesByAttribute(attributeid) {
    return api.get(`/articles/attribute/${attributeid}/latest`)
  }

  /**
   * 点赞文章
   * @param {number} articleid - 文章ID
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   */
  likeArticle(articleid) {
    return api.post(`/articles/like/${articleid}`)
  }
}

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

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