// 留言相关API服务
import apiService from './apiService'

/**
 * 留言服务类
 */
class MessageService {
  /**
   * 获取所有留言
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message[]>>}
   */
  getAllMessages() {
    return apiService.get('/messages')
  }

  /**
   * 获取单条留言
   * @param {number} messageid - 留言ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message>>}
   */
  getMessageById(messageid) {
    return apiService.get(`/messages/${messageid}`)
  }

  /**
   * 根据文章ID获取留言
   * @param {number} articleid - 文章ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message[]>>}
   */
  getMessagesByArticleId(articleid) {
    return apiService.get(`/messages/article/${articleid}`)
  }

  /**
   * 获取根留言
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message[]>>}
   */
  getRootMessages() {
    return apiService.get('/messages/root')
  }

  /**
   * 根据父留言ID获取回复
   * @param {number} parentid - 父留言ID
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message[]>>}
   */
  getRepliesByParentId(parentid) {
    return apiService.get(`/messages/${parentid}/replies`)
  }

  /**
   * 根据昵称搜索留言
   * @param {string} nickname - 昵称
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message[]>>}
   */
  searchMessagesByNickname(nickname) {
    return apiService.get(`/messages/search?nickname=${nickname}`)
  }

  /**
   * 获取文章评论数量
   * @param {number} articleid - 文章ID
   * @returns {Promise<import('../types').ApiResponse<number>>}
   */
  getMessageCountByArticleId(articleid) {
    return apiService.get(`/messages/count/article/${articleid}`)
  }

  /**
   * 创建留言
   * @param {import('../types').MessageDto} messageData - 留言数据
   * @returns {Promise<import('../types').ApiResponse<import('../types').Message>>}
   */
  saveMessage(messageData) {
    return apiService.post('/messages', messageData)
  }

  /**
   * 删除留言
   * @param {number} messageid - 留言ID
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   */
  deleteMessage(messageid) {
    return apiService.delete(`/messages/${messageid}`)
  }
  
  /**
   * 点赞留言
   * @param {number} messageid - 留言ID
   * @returns {Promise<import('../types').ApiResponse<boolean>>}
   * 
   */
  likeMessage(messageid) {
    return apiService.post(`/messages/${messageid}/like`)
  }
}

// 导出留言服务实例
export default new MessageService()