Yaltopia-Ticket-Admin/src/services/faq.service.ts
2026-06-12 12:21:18 +03:00

68 lines
1.4 KiB
TypeScript

import apiClient from "./api/client"
/** Who can see this FAQ entry in product surfaces */
export type FaqAudience = "END_USER" | "SYSTEM_USER" | "ALL"
export interface FaqEntry {
id: string
question: string
answer: string
audience: FaqAudience
sortOrder: number
isPublished: boolean
createdAt: string
updatedAt?: string
}
export interface PaginatedFaqs {
data: FaqEntry[]
total: number
page: number
limit: number
totalPages: number
}
class FaqService {
async list(params?: {
page?: number
limit?: number
audience?: FaqAudience
search?: string
}): Promise<PaginatedFaqs> {
const response = await apiClient.get<PaginatedFaqs>("/faq", {
params,
})
return response.data
}
async create(data: {
question: string
answer: string
audience: FaqAudience
sortOrder?: number
isPublished?: boolean
}): Promise<FaqEntry> {
const response = await apiClient.post<FaqEntry>("/faq", data)
return response.data
}
async update(
id: string,
data: Partial<
Pick<
FaqEntry,
"question" | "answer" | "audience" | "sortOrder" | "isPublished"
>
>,
): Promise<FaqEntry> {
const response = await apiClient.patch<FaqEntry>(`/faq/${id}`, data)
return response.data
}
async remove(id: string): Promise<void> {
await apiClient.delete(`/faq/${id}`)
}
}
export const faqService = new FaqService()