SurfSense/surfsense_web/lib/apis/chats-api.service.api.ts
2025-11-17 08:10:12 +02:00

103 lines
2.6 KiB
TypeScript

import { ResearchMode } from "@/components/chat/types";
import { Message } from "@ai-sdk/react";
import {
chatDetails,
chatSummary,
createChatRequest,
CreateChatRequest,
deleteChatRequest,
DeleteChatRequest,
getChatDetailsRequest,
GetChatDetailsRequest,
getChatsBySearchSpaceRequest,
GetChatsBySearchSpaceRequest,
deleteChatResponse,
UpdateChatRequest,
updateChatRequest,
} from "@/contracts/types/chat.types";
import { z } from "zod";
import { baseApiService } from "./base-api.service";
export class ChatApiService {
fetchChatDetails = async (request: GetChatDetailsRequest) => {
// Validate the request
const parsedRequest = getChatDetailsRequest.safeParse(request);
if (!parsedRequest.success) {
throw new Error(`Invalid request: ${parsedRequest.error.message}`);
}
return baseApiService.get(`/api/v1/chats/${request.id}`, chatDetails);
};
fetchChatsBySearchSpace = async (request: GetChatsBySearchSpaceRequest) => {
// Validate the request
const parsedRequest = getChatsBySearchSpaceRequest.safeParse(request);
if (!parsedRequest.success) {
throw new Error(`Invalid request: ${parsedRequest.error.message}`);
}
return baseApiService.get(
`/api/v1/chats?search_space_id=${request.search_space_id}`,
z.array(chatSummary)
);
};
deleteChat = async (request: DeleteChatRequest) => {
// Validate the request
const parsedRequest = deleteChatRequest.safeParse(request);
if (!parsedRequest.success) {
throw new Error(`Invalid request: ${parsedRequest.error.message}`);
}
return baseApiService.delete(`/api/v1/chats/${request.id}`, undefined, deleteChatResponse);
};
createChat = async (request: CreateChatRequest) => {
// Validate the request
const parsedRequest = createChatRequest.safeParse(request);
if (!parsedRequest.success) {
throw new Error(`Invalid request: ${parsedRequest.error.message}`);
}
const { type, title, initial_connectors, messages, search_space_id } = parsedRequest.data;
return baseApiService.post(
`/api/v1/chats`,
{
type,
title,
initial_connectors,
messages,
search_space_id,
},
chatSummary
);
};
updateChat = async (request: UpdateChatRequest) => {
// Validate the request
const parsedRequest = updateChatRequest.safeParse(request);
if (!parsedRequest.success) {
throw new Error(`Invalid request: ${parsedRequest.error.message}`);
}
const { type, title, initial_connectors, messages, search_space_id, id } = parsedRequest.data;
return baseApiService.put(
`/api/v1/chats/${id}`,
{
type,
title,
initial_connectors,
messages,
search_space_id,
},
chatSummary
);
};
}