mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-18 21:15:16 +02:00
166 lines
5.3 KiB
TypeScript
166 lines
5.3 KiB
TypeScript
import {
|
|
type ConnectionCreateRequest,
|
|
type ConnectionRead,
|
|
type ConnectionUpdateRequest,
|
|
connectionCreateRequest,
|
|
connectionListResponse,
|
|
connectionRead,
|
|
connectionUpdateRequest,
|
|
type ModelCreateRequest,
|
|
type ModelPreviewRead,
|
|
type ModelProviderRead,
|
|
type ModelRead,
|
|
type ModelRoles,
|
|
type ModelsBulkUpdateRequest,
|
|
type ModelTestPreviewRequest,
|
|
type ModelUpdateRequest,
|
|
modelCreateRequest,
|
|
modelListResponse,
|
|
modelPreviewListResponse,
|
|
modelProviderListResponse,
|
|
modelRead,
|
|
modelRoles,
|
|
modelsBulkUpdateRequest,
|
|
modelTestPreviewRequest,
|
|
modelUpdateRequest,
|
|
type VerifyConnectionResponse,
|
|
verifyConnectionResponse,
|
|
} from "@/contracts/types/model-connections.types";
|
|
import { ValidationError } from "../error";
|
|
import { baseApiService } from "./base-api.service";
|
|
|
|
class ModelConnectionsApiService {
|
|
getGlobalConnections = async (): Promise<ConnectionRead[]> => {
|
|
return baseApiService.get(`/api/v1/global-model-connections`, connectionListResponse);
|
|
};
|
|
|
|
getModelProviders = async (): Promise<ModelProviderRead[]> => {
|
|
return baseApiService.get(`/api/v1/model-providers`, modelProviderListResponse);
|
|
};
|
|
|
|
getConnections = async (searchSpaceId: number): Promise<ConnectionRead[]> => {
|
|
return baseApiService.get(
|
|
`/api/v1/model-connections?search_space_id=${searchSpaceId}`,
|
|
connectionListResponse
|
|
);
|
|
};
|
|
|
|
createConnection = async (request: ConnectionCreateRequest): Promise<ConnectionRead> => {
|
|
const parsed = connectionCreateRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.post(`/api/v1/model-connections`, connectionRead, {
|
|
body: parsed.data,
|
|
});
|
|
};
|
|
|
|
updateConnection = async (
|
|
id: number,
|
|
request: ConnectionUpdateRequest
|
|
): Promise<ConnectionRead> => {
|
|
const parsed = connectionUpdateRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.put(`/api/v1/model-connections/${id}`, connectionRead, {
|
|
body: parsed.data,
|
|
});
|
|
};
|
|
|
|
deleteConnection = async (id: number) => {
|
|
return baseApiService.delete(`/api/v1/model-connections/${id}`, undefined);
|
|
};
|
|
|
|
verifyConnection = async (id: number): Promise<VerifyConnectionResponse> => {
|
|
return baseApiService.post(`/api/v1/model-connections/${id}/verify`, verifyConnectionResponse);
|
|
};
|
|
|
|
discoverModels = async (id: number): Promise<ModelRead[]> => {
|
|
return baseApiService.post(`/api/v1/model-connections/${id}/discover`, modelListResponse);
|
|
};
|
|
|
|
previewModels = async (request: ConnectionCreateRequest): Promise<ModelPreviewRead[]> => {
|
|
const parsed = connectionCreateRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.post(
|
|
`/api/v1/model-connections/discover-preview`,
|
|
modelPreviewListResponse,
|
|
{
|
|
body: parsed.data,
|
|
}
|
|
);
|
|
};
|
|
|
|
testPreviewModel = async (
|
|
request: ModelTestPreviewRequest
|
|
): Promise<VerifyConnectionResponse> => {
|
|
const parsed = modelTestPreviewRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.post(`/api/v1/model-connections/test-preview`, verifyConnectionResponse, {
|
|
body: parsed.data,
|
|
});
|
|
};
|
|
|
|
addManualModel = async (
|
|
connectionId: number,
|
|
request: ModelCreateRequest
|
|
): Promise<ModelRead> => {
|
|
const parsed = modelCreateRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.post(`/api/v1/model-connections/${connectionId}/models`, modelRead, {
|
|
body: parsed.data,
|
|
});
|
|
};
|
|
|
|
updateModel = async (id: number, request: ModelUpdateRequest): Promise<ModelRead> => {
|
|
const parsed = modelUpdateRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.put(`/api/v1/models/${id}`, modelRead, {
|
|
body: parsed.data,
|
|
});
|
|
};
|
|
|
|
bulkUpdateModels = async (
|
|
connectionId: number,
|
|
request: ModelsBulkUpdateRequest
|
|
): Promise<ModelRead[]> => {
|
|
const parsed = modelsBulkUpdateRequest.safeParse(request);
|
|
if (!parsed.success) {
|
|
throw new ValidationError(parsed.error.issues.map((issue) => issue.message).join(", "));
|
|
}
|
|
return baseApiService.request(
|
|
`/api/v1/model-connections/${connectionId}/models`,
|
|
modelListResponse,
|
|
{
|
|
method: "PATCH",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: parsed.data,
|
|
}
|
|
);
|
|
};
|
|
|
|
testModel = async (id: number): Promise<VerifyConnectionResponse> => {
|
|
return baseApiService.post(`/api/v1/models/${id}/test`, verifyConnectionResponse);
|
|
};
|
|
|
|
getModelRoles = async (searchSpaceId: number): Promise<ModelRoles> => {
|
|
return baseApiService.get(`/api/v1/search-spaces/${searchSpaceId}/model-roles`, modelRoles);
|
|
};
|
|
|
|
updateModelRoles = async (searchSpaceId: number, roles: ModelRoles): Promise<ModelRoles> => {
|
|
return baseApiService.put(`/api/v1/search-spaces/${searchSpaceId}/model-roles`, modelRoles, {
|
|
body: roles,
|
|
});
|
|
};
|
|
}
|
|
|
|
export const modelConnectionsApiService = new ModelConnectionsApiService();
|