Skip to content

Commit

Permalink
feat: add adapter for related prompts
Browse files Browse the repository at this point in the history
  • Loading branch information
victorcg88 committed Oct 21, 2024
1 parent fb4ae07 commit e3ae56a
Show file tree
Hide file tree
Showing 20 changed files with 139 additions and 3 deletions.
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/endpoint-adapters/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export * from './identifier-results.endpoint-adapter';
export * from './next-queries.endpoint-adapter';
export * from './query-suggestions.endpoint-adapter';
export * from './recommendations.endpoint-adapter';
export * from './related-prompts.endpoint-adapter';
export * from './related-tags.endpoint-adapter';
export * from './search.endpoint-adapter';
export * from './semantic-queries.endpoint-adapter';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { endpointAdapterFactory, interpolate } from '@empathyco/x-adapter';
import { RelatedPromptsRequest, RelatedPromptsResponse } from '@empathyco/x-types';
import { relatedPromptsRequestMapper } from '../mappers/requests/related-prompts-request.mapper';
import { relatedPromptsResponseMapper } from '../mappers/responses/related-prompts-response.mapper';
import { getSearchServiceUrl } from './utils';

/**
* This endpoint does not support pagination in the request.
*/
export const relatedPromptsEndpointAdapter = endpointAdapterFactory<
RelatedPromptsRequest,
RelatedPromptsResponse
>({
endpoint: from =>
interpolate(`${getSearchServiceUrl(from)}/relatedprompts/{extraParams.instance}`, from),
requestMapper: relatedPromptsRequestMapper,
responseMapper: relatedPromptsResponseMapper,
defaultRequestOptions: {
id: 'related-prompts',
parameters: {
internal: true
}
}
});
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/mappers/requests/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export * from './next-queries-request.mapper';
export * from './popular-searches-request.mapper';
export * from './query-suggestions-request.mapper';
export * from './recommendations-request.mapper';
export * from './related-prompts-request.mapper';
export * from './related-tags-request.mapper';
export * from './search-request.mapper';
export * from './semantic-queries-request.mapper';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { schemaMapperFactory } from '@empathyco/x-adapter';
import { RelatedPromptsRequest } from '@empathyco/x-types';
import { PlatformRelatedPromptsRequest } from '../../types/requests/related-prompts-request.model';
import { relatedPromptsRequestSchema } from '../../schemas/requests/related-prompts-request.schema';

/**
* Default implementation for the RelatedPromptsRequestMapper.
*/
export const relatedPromptsRequestMapper = schemaMapperFactory<
RelatedPromptsRequest,
PlatformRelatedPromptsRequest
>(relatedPromptsRequestSchema);
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/mappers/responses/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export * from './next-queries-response.mapper';
export * from './query-suggestions-response.mapper';
export * from './popular-searches-response.mapper';
export * from './recommendations-response.mapper';
export * from './related-prompts-response.mapper';
export * from './related-tags-response.mapper';
export * from './search-response.mapper';
export * from './semantic-queries-response.mapper';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { schemaMapperFactory } from '@empathyco/x-adapter';
import { RelatedPromptsResponse } from '@empathyco/x-types';
// eslint-disable-next-line max-len
import { PlatformRelatedPromptsResponse } from '../../types/responses/related-prompts-response.model';
// eslint-disable-next-line max-len
import { relatedPromptsResponseSchema } from '../../schemas/responses/related-prompts-response.schema';

/**
* Default implementation for the RelatedPromptsResponseMapper.
*/
export const relatedPromptsResponseMapper = schemaMapperFactory<
PlatformRelatedPromptsResponse,
RelatedPromptsResponse
>(relatedPromptsResponseSchema);
3 changes: 2 additions & 1 deletion packages/x-adapter-platform/src/platform.adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { taggingEndpointAdapter } from './endpoint-adapters/tagging.endpoint-ada
import { querySuggestionsEndpointAdapter } from './endpoint-adapters/query-suggestions.endpoint-adapter';
import { semanticQueriesEndpointAdapter } from './endpoint-adapters/semantic-queries.endpoint-adapter';
import { experienceControlsEndpointAdapter } from './endpoint-adapters/experience-controls.endpoint-adapter';
import { relatedPromptsEndpointAdapter } from './endpoint-adapters/related-prompts.endpoint-adapter';
/* eslint-enable max-len */

/**
Expand All @@ -23,7 +24,7 @@ export const platformAdapter: PlatformAdapter = {
recommendations: recommendationsEndpointAdapter,
nextQueries: nextQueriesEndpointAdapter,
querySuggestions: querySuggestionsEndpointAdapter,
relatedPrompts: undefined,
relatedPrompts: relatedPromptsEndpointAdapter,
relatedTags: relatedTagsEndpointAdapter,
identifierResults: identifierResultsEndpointAdapter,
tagging: taggingEndpointAdapter,
Expand Down
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/schemas/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export * from './banner.schema';
export * from './facet.schema';
export * from './filters';
export * from './next-query.schema';
export * from './related-prompt.schema';
export * from './related-tag.schema';
export * from './partial-results.schema';
export * from './promoted.schema';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { createMutableSchema } from '@empathyco/x-adapter';
import { RelatedPrompt } from '@empathyco/x-types';
import { PlatformRelatedPrompt } from '../../types/models/related-prompt.model';

/**
* Default implementation for the RelatedPromptSchema.
*/
export const relatedPromptSchema = createMutableSchema<PlatformRelatedPrompt, RelatedPrompt>({
modelName: () => 'RelatedPrompt',
nextQueries: () => [],
suggestionText: 'suggestionText',
type: () => 'SYNTHETIC'
});
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/schemas/requests/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export * from './identifier-results-request.schema';
export * from './next-queries-request.schema';
export * from './popular-searches-request.schema';
export * from './query-suggestions-request.schema';
export * from './related-prompts-request.schema';
export * from './related-tags-request.schema';
export * from './recommendations-request.schema';
export * from './search-request.schema';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { createMutableSchema } from '@empathyco/x-adapter';
import { RelatedPromptsRequest } from '@empathyco/x-types';
import { PlatformRelatedPromptsRequest } from '../../types/requests/related-prompts-request.model';

/**
* Default implementation for the RelatedPromptsRequestSchema.
*/
export const relatedPromptsRequestSchema = createMutableSchema<
RelatedPromptsRequest,
PlatformRelatedPromptsRequest
>({
query: 'query',
extraParams: 'extraParams'
});
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/schemas/responses/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export * from './identifier-results-response.schema';
export * from './next-queries-response.schema';
export * from './popular-searches-response.schema';
export * from './query-suggestions-response.schema';
export * from './related-prompts-response.schema';
export * from './related-tags-response.schema';
export * from './recommendations-response.schema';
export * from './semantic-queries-response.schema';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { createMutableSchema } from '@empathyco/x-adapter';
import { RelatedPromptsResponse } from '@empathyco/x-types';
// eslint-disable-next-line max-len
import { PlatformRelatedPromptsResponse } from '../../types/responses/related-prompts-response.model';
import { relatedPromptSchema } from '../models/related-prompt.schema';

/**
* Default implementation for the RelatedPromptsResponseSchema.
*/
export const relatedPromptsResponseSchema = createMutableSchema<
PlatformRelatedPromptsResponse,
RelatedPromptsResponse
>({
relatedPrompts: {
$path: 'data.relatedprompts',
$subSchema: relatedPromptSchema
}
});
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/types/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export * from './next-query.model';
export * from './partials.model';
export * from './promoted.model';
export * from './redirection.model';
export * from './related-prompt.model';
export * from './related-tag.model';
export * from './result.model';
export * from './semantic-query.model';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/**
* Related prompt model for the `platform` API.
*/
export interface PlatformRelatedPrompt {
nextQueries: string[];
suggestionText: string;
type: 'SYNTHETIC';
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ import {
TaggingRequest,
ExperienceControlsRequest,
ExperienceControlsResponse,
XComponentsAdapter
XComponentsAdapter,
RelatedPromptsRequest,
RelatedPromptsResponse
} from '@empathyco/x-types';
import { ExtendableEndpointAdapter } from '@empathyco/x-adapter';

Expand All @@ -33,7 +35,7 @@ export interface PlatformAdapter extends XComponentsAdapter {
nextQueries: ExtendableEndpointAdapter<NextQueriesRequest, NextQueriesResponse>;
recommendations: ExtendableEndpointAdapter<RecommendationsRequest, RecommendationsResponse>;
querySuggestions: ExtendableEndpointAdapter<QuerySuggestionsRequest, QuerySuggestionsResponse>;
relatedPrompts: any;
relatedPrompts: ExtendableEndpointAdapter<RelatedPromptsRequest, RelatedPromptsResponse>;
relatedTags: ExtendableEndpointAdapter<RelatedTagsRequest, RelatedTagsResponse>;
identifierResults: ExtendableEndpointAdapter<IdentifierResultsRequest, IdentifierResultsResponse>;
semanticQueries: ExtendableEndpointAdapter<SemanticQueriesRequest, SemanticQueriesResponse>;
Expand Down
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/types/requests/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export * from './next-queries-request.model';
export * from './popular-searches-request.model';
export * from './query-suggestions-request.model';
export * from './recommendations-request.model';
export * from './related-prompts-request.model';
export * from './related-tags-request.model';
export * from './search-request.model';
export * from './semantic-queries-request.model';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { PlatformExtraParamsRequest, PlatformQueryableRequest } from './request.types';

/**
* Request for the `related prompts` endpoint with `extra params`.
*
* @public
*/
export interface PlatformRelatedPromptsRequest
extends PlatformQueryableRequest,
PlatformExtraParamsRequest {}
1 change: 1 addition & 0 deletions packages/x-adapter-platform/src/types/responses/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export * from './identifier-results-response.model';
export * from './query-suggestions-response.model';
export * from './next-queries-response.model';
export * from './popular-searches-response.model';
export * from './related-prompts-response.model';
export * from './related-tags-response.model';
export * from './recommendations-response.model';
export * from './search-response.model';
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { PlatformRelatedPrompt } from '../models/related-prompt.model';

/**
* Response for the `related prompts` endpoint.
*/
export interface PlatformRelatedPromptsResponse {
data: {
relatedprompts: PlatformRelatedPrompt[];
};
status: number;
}

0 comments on commit e3ae56a

Please sign in to comment.