106 lines
3.1 KiB
TypeScript
106 lines
3.1 KiB
TypeScript
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;
|