add the chats api service

This commit is contained in:
thierryverse 2025-11-14 00:23:50 +02:00
parent aa9bb15c13
commit 0c41e487d8

View file

@ -0,0 +1,114 @@
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
);
};
}