import { BlogCategory, BlogListParams, BlogPost, CreateUpdateBlogCategoryDto, CreateUpdateBlogPostDto, PaginatedResponse } from '@/proxy/blog/blog'; import apiService from '@/services/api.service' class BlogService { async getPosts(params: BlogListParams = {}): Promise> { const response = await apiService.fetchData>({ url: '/api/app/blog/posts', method: 'GET', params, }) return response.data } async getPostBySlug(slug: string): Promise { const response = await apiService.fetchData({ url : `/api/app/blog/post-by-slug?slug=${slug}`, method: 'GET', }) return response.data; } async getPost(idOrSlug: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/posts/${idOrSlug}`, method: 'GET', }) return response.data } async createPost(data: CreateUpdateBlogPostDto): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/post', method: 'POST', data: data as any, }) return response.data } async updatePost(id: string, data: CreateUpdateBlogPostDto): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/post`, method: 'PUT', data: data as any, }) return response.data } async deletePost(id: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${id}/post`, method: 'DELETE', }) } async publishPost(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/publish-post`, method: 'POST', }) return response.data } async unpublishPost(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/unpublish-post`, method: 'POST', }) return response.data } async getCategories(): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/categories', method: 'GET', }) return response.data } async deleteComment(id: string): Promise { await apiService.fetchData({ url: `/api/app/blog/comments/${id}`, method: 'DELETE', }) } async likePost(postId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${postId}/like-post`, method: 'POST', }) } async unlikePost(postId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${postId}/unlike-post`, method: 'DELETE', }) } async likeComment(commentId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/comments/${commentId}/like`, method: 'POST', }) } async unlikeComment(commentId: string): Promise { await apiService.fetchData({ url: `/api/app/blog/comments/${commentId}/like`, method: 'DELETE', }) } async getTags(): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/tags', method: 'GET', }) return response.data } // Category methods async getCategory(id: string): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/category`, method: 'GET', }) return response.data } async createCategory(data: CreateUpdateBlogCategoryDto): Promise { const response = await apiService.fetchData({ url: '/api/app/blog/category', method: 'POST', data: data as any, }) return response.data } async updateCategory(id: string, data: CreateUpdateBlogCategoryDto): Promise { const response = await apiService.fetchData({ url: `/api/app/blog/${id}/category`, method: 'PUT', data: data as any, }) return response.data } async deleteCategory(id: string): Promise { await apiService.fetchData({ url: `/api/app/blog/${id}/category`, method: 'DELETE', }) } } export const blogService = new BlogService()