From 64d4c2dc5641bd46cf157489ad74d4f16e788871 Mon Sep 17 00:00:00 2001 From: Alvin Date: Fri, 15 Jul 2022 17:34:53 -0700 Subject: [PATCH] Recommendation query types (#7) * add initial types for RecommendationQuery * sort types * allow additional properties in all fields Co-authored-by: Timothy Yue <62864298+timothyyue-b@users.noreply.github.com> --- src/types/recommendations.ts | 86 ++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/types/recommendations.ts diff --git a/src/types/recommendations.ts b/src/types/recommendations.ts new file mode 100644 index 0000000..269295e --- /dev/null +++ b/src/types/recommendations.ts @@ -0,0 +1,86 @@ +interface GenericProperties { + [key: string]: any; +} + +export interface User extends GenericProperties { + email?: string; + phone?: string; + sessionId?: string; + userId?: string; + identifiers?: { + browserId: string; + }; + additional?: UserAdditionalData; +} + +export interface UserAdditionalData extends GenericProperties { + identifiers?: { + browserId?: string; + assignedGroup?: string; + originalSessionId?: string; + }; + localDateTime?: string; + location?: { + storeId?: number; + }; + timezone?: string; + userAgent?: string; + url?: string; +} + +export interface Recommendation extends GenericProperties { + namedRecommendations?: Array; + numRecommendations?: number; + queryPostProcessors?: Array; + recommendationAdditionalParameters?: RecommendationAdditionalParameters; + recommendationAtTime?: number; + recommendationCategories?: Array; + recommendationCategoriesBlacklist?: Array; + recommendationDisableFilters?: boolean; + recommendationForItems?: Array; + recommendationMinQuantity?: number; + recommendationQueryName?: string; + recommendationRemoveDuplicates?: boolean; + recommendationSubBlockers?: Array; + recommendationSubInhibitors?: Array; + recommendationSubRecommenders?: Array; +} + +export interface DataTags extends GenericProperties { + atStore?: string; + deviceType?: 'Bot' | 'Personal computer' | 'Smartphone' | Omit; +} + +export interface CuratedLists extends GenericProperties { + specifiedLists: Array; +} + +export interface RecommendationAdditionalParameters extends GenericProperties { + customSorterTypes?: Array; + dataTags?: DataTags; + dataTagsToConsider?: Array>; + ignoreRecommendations?: boolean; + manual?: CuratedLists; + numRecommendationsInternal?: number; + postProcessors?: Array; + selectedModels?: Array; + temporalTypes?: Array; +} + +interface BaseRecommendationQuery extends GenericProperties { + unixTimestamp?: number; + user?: User; + signature?: string | null; +} + +interface SingleRecommendationQuery extends BaseRecommendationQuery { + recommendation: Recommendation; + recommendations?: never; +} + +interface MultipleRecommendationQuery extends BaseRecommendationQuery { + recommendation?: never; + recommendations: Array; +} + +export type RecommendationQuery = SingleRecommendationQuery | MultipleRecommendationQuery;