@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
39 lines (29 loc) • 1.38 kB
text/typescript
import * as yup from 'yup';
import { isValidDocumentIdForYup } from '../../../src/utils';
import { MESSAGES } from '../../config/messages';
import { LablebDocument } from '../../core/lableb-client/lableb-client.type';
import { IndexingRequestParams } from './indexing.request.type';
interface IndexingSchema extends Omit<IndexingRequestParams, "documents"> {
/**
* the optional key/value in LablebAPIDocument caused issue for yup
* so we define it as an object which only contains "id" field
*/
documents: (Pick<LablebDocument, "id">)[],
}
// @ts-ignore
export const buildIndexingRequestSchema: yup.SchemaOf<IndexingSchema> =
yup.object()
.shape({
indexingAPIKey: yup
.string()
.required(MESSAGES.INDEXING_API_KEY_IS_REQUIRED),
platformName: yup.string().required(MESSAGES.PLATFORM_NAME_IS_REQUIRED),
indexName: yup.string().required(MESSAGES.INDEX_NAME_IS_REQUIRED),
documents: yup
.array()
.required(MESSAGES.DOCUMENTS_IS_REQUIRED)
.min(1, MESSAGES.DOCUMENTS_LENGTH_IS_INVALID)
.of(yup.object().shape({
id: yup.string().required(MESSAGES.DOCUMENT_ID_IS_REQUIRED).test('test-id', MESSAGES.IS_INVALID_DOCUMENT_ID, isValidDocumentIdForYup),
})),
});