E-Commerce-Module/frontend/src/services/blogService.js

62 lines
No EOL
1.8 KiB
JavaScript

import apiClient from './api';
const blogService = {
/**
* Get all published blog posts with optional filtering
* @param {Object} params - Query parameters for filtering posts
* @returns {Promise} Promise with the API response
*/
getAllPosts: async (params = {}) => {
try {
const response = await apiClient.get('/blog', { params });
return response.data;
} catch (error) {
throw error.response?.data || { message: 'An unknown error occurred' };
}
},
/**
* Get a single blog post by slug
* @param {string} slug - Blog post slug
* @returns {Promise} Promise with the API response
*/
getPostBySlug: async (slug) => {
try {
const response = await apiClient.get(`/blog/${slug}`);
return response.data;
} catch (error) {
throw error.response?.data || { message: 'An unknown error occurred' };
}
},
/**
* Get all blog categories
* @returns {Promise} Promise with the API response
*/
getAllCategories: async () => {
try {
const response = await apiClient.get('/blog/categories/all');
return response.data;
} catch (error) {
throw error.response?.data || { message: 'An unknown error occurred' };
}
},
/**
* Add a comment to a blog post
* @param {string} postId - Blog post ID
* @param {Object} commentData - Comment data to submit
* @param {string} commentData.userId - User ID
* @returns {Promise} Promise with the API response
*/
addComment: async (postId, commentData) => {
try {
const response = await apiClient.post(`/blog/${postId}/comments`, commentData);
return response.data;
} catch (error) {
throw error.response?.data || { message: 'An unknown error occurred' };
}
}
};
export default blogService;