dressed_for_succes_store/frontend/lib/content.ts

106 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import api from './api';
// Интерфейсы для страниц контента
export interface Page {
id: number;
title: string;
slug: string;
content: string;
meta_title?: string;
meta_description?: string;
is_published: boolean;
created_at: string;
updated_at?: string;
}
export interface PageCreate {
title: string;
slug: string;
content: string;
meta_title?: string;
meta_description?: string;
is_published?: boolean;
}
export interface PageUpdate {
title?: string;
slug?: string;
content?: string;
meta_title?: string;
meta_description?: string;
is_published?: boolean;
}
// Сервис для работы с контентом
const contentService = {
// Получить список страниц
getPages: async (params?: {
skip?: number;
limit?: number;
}): Promise<Page[]> => {
try {
const response = await api.get<Page[]>('/content/pages', { params });
return response as Page[];
} catch (error) {
console.error('Ошибка при получении списка страниц:', error);
return [];
}
},
// Получить страницу по ID
getPageById: async (pageId: number): Promise<Page | null> => {
try {
const response = await api.get<Page>(`/content/pages/${pageId}`);
return response as Page;
} catch (error) {
console.error(`Ошибка при получении страницы ${pageId}:`, error);
return null;
}
},
// Получить страницу по slug
getPageBySlug: async (slug: string): Promise<Page | null> => {
try {
const response = await api.get<Page>(`/content/pages/slug/${slug}`);
return response as Page;
} catch (error) {
console.error(`Ошибка при получении страницы по slug ${slug}:`, error);
return null;
}
},
// Создать новую страницу (только для админов)
createPage: async (pageData: PageCreate): Promise<Page | null> => {
try {
const response = await api.post<Page>('/content/pages', pageData);
return response as Page;
} catch (error) {
console.error('Ошибка при создании страницы:', error);
return null;
}
},
// Обновить страницу (только для админов)
updatePage: async (pageId: number, pageData: PageUpdate): Promise<Page | null> => {
try {
const response = await api.put<Page>(`/content/pages/${pageId}`, pageData);
return response as Page;
} catch (error) {
console.error(`Ошибка при обновлении страницы ${pageId}:`, error);
return null;
}
},
// Удалить страницу (только для админов)
deletePage: async (pageId: number): Promise<boolean> => {
try {
await api.delete(`/content/pages/${pageId}`);
return true;
} catch (error) {
console.error(`Ошибка при удалении страницы ${pageId}:`, error);
return false;
}
}
};
export default contentService;