39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
// File: lib/services/search.service.ts
|
|
import apiClient from "@/lib/api/client";
|
|
import { SearchQueryDto } from "@/types/dto/search/search-query.dto";
|
|
|
|
export const searchService = {
|
|
/**
|
|
* ค้นหาเอกสารทั้งระบบ (Full-text Search)
|
|
* ใช้ Elasticsearch ผ่าน Backend
|
|
*/
|
|
search: async (query: SearchQueryDto) => {
|
|
// ส่ง params แบบ flat ตาม DTO
|
|
// GET /search?q=...&type=...&projectId=...
|
|
const response = await apiClient.get("/search", {
|
|
params: query
|
|
});
|
|
return response.data;
|
|
},
|
|
|
|
/**
|
|
* Suggestion (Autocomplete)
|
|
* ใช้ search endpoint แต่จำกัดจำนวน
|
|
*/
|
|
suggest: async (query: string) => {
|
|
const response = await apiClient.get("/search", {
|
|
params: { q: query, limit: 5 }
|
|
});
|
|
// Assuming backend returns { items: [], ... } or just []
|
|
return response.data.items || response.data;
|
|
},
|
|
|
|
/**
|
|
* (Optional) Re-index ข้อมูลใหม่ กรณีข้อมูลไม่ตรง (Admin Only)
|
|
*/
|
|
reindex: async (type?: string) => {
|
|
const response = await apiClient.post("/search/reindex", { type });
|
|
return response.data;
|
|
}
|
|
};
|