knowledgeGroupService.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { KnowledgeGroup, CreateGroupData, UpdateGroupData } from '../types';
  2. import { apiClient } from './apiClient';
  3. export const knowledgeGroupService = {
  4. // すべてのグループを取得
  5. async getGroups(): Promise<KnowledgeGroup[]> {
  6. const response = await apiClient.request('/knowledge-groups', {});
  7. if (!response.ok) throw new Error('Failed to fetch groups');
  8. return response.json();
  9. },
  10. // グループを作成
  11. async createGroup(data: CreateGroupData): Promise<KnowledgeGroup> {
  12. const { data: group } = await apiClient.post<KnowledgeGroup>('/knowledge-groups', data);
  13. return group;
  14. },
  15. // グループを更新
  16. async updateGroup(id: string, data: UpdateGroupData): Promise<KnowledgeGroup> {
  17. const { data: group } = await apiClient.put<KnowledgeGroup>(`/knowledge-groups/${id}`, data);
  18. return group;
  19. },
  20. // グループを削除
  21. async deleteGroup(id: string): Promise<void> {
  22. const response = await apiClient.request(`/knowledge-groups/${id}`, {
  23. method: 'DELETE',
  24. });
  25. if (!response.ok) throw new Error('Failed to delete group');
  26. },
  27. // グループ内のファイルを取得
  28. async getGroupFiles(id: string): Promise<any[]> {
  29. const response = await apiClient.request(`/knowledge-groups/${id}/files`, {});
  30. if (!response.ok) throw new Error('Failed to fetch group files');
  31. const data = await response.json();
  32. return data.files;
  33. },
  34. // ファイルをグループに追加
  35. async addFileToGroups(fileId: string, groupIds: string[]): Promise<void> {
  36. await apiClient.post(`/knowledge-bases/${fileId}/groups`, { groupIds });
  37. },
  38. // グループからファイルを削除
  39. async removeFileFromGroup(fileId: string, groupId: string): Promise<void> {
  40. const response = await apiClient.request(`/knowledge-bases/${fileId}/groups/${groupId}`, {
  41. method: 'DELETE',
  42. });
  43. if (!response.ok) throw new Error('Failed to remove file from group');
  44. },
  45. };