diff --git a/src/Typesense/CurationSet.ts b/src/Typesense/CurationSet.ts index cf7a74a9..a370cbe3 100644 --- a/src/Typesense/CurationSet.ts +++ b/src/Typesense/CurationSet.ts @@ -1,5 +1,6 @@ import ApiCall from "./ApiCall"; -import CurationSets, { +import CurationSets from "./CurationSets"; +import type { CurationSetDeleteResponseSchema, CurationSetSchema, CurationSetUpsertSchema, @@ -11,7 +12,10 @@ export default class CurationSet { private readonly _items: CurationSetItems; private individualItems: Record = {}; - constructor(private name: string, private apiCall: ApiCall) { + constructor( + private name: string, + private apiCall: ApiCall, + ) { this._items = new CurationSetItems(this.name, apiCall); } @@ -50,5 +54,3 @@ export default class CurationSet { return `${CurationSets.RESOURCEPATH}/${encodeURIComponent(this.name)}`; } } - - diff --git a/src/Typesense/CurationSetItem.ts b/src/Typesense/CurationSetItem.ts index 96c916be..6c734d19 100644 --- a/src/Typesense/CurationSetItem.ts +++ b/src/Typesense/CurationSetItem.ts @@ -1,5 +1,6 @@ import ApiCall from "./ApiCall"; -import CurationSets, { CurationObjectSchema } from "./CurationSets"; +import CurationSets from "./CurationSets"; +import type { CurationObjectSchema } from "./CurationSets"; export interface CurationItemDeleteResponseSchema { id: string; @@ -32,5 +33,3 @@ export default class CurationSetItem { )}/items/${encodeURIComponent(this.itemId)}`; } } - - diff --git a/src/Typesense/CurationSets.ts b/src/Typesense/CurationSets.ts index f913ea89..841ee21e 100644 --- a/src/Typesense/CurationSets.ts +++ b/src/Typesense/CurationSets.ts @@ -1,32 +1,33 @@ import ApiCall from "./ApiCall"; -export interface CurationIncludeSchema { - id: string; - position: number; -} - -export interface CurationExcludeSchema { - id: string; -} - -export interface CurationRuleSchema { - query?: string; - match?: "exact" | "contains"; - filter_by?: string; - tags?: string[]; -} +export type CurationRuleSchema = + | { tags: string[]; query?: never; match?: never; filter_by?: never } + | { + query: string; + match: "exact" | "contains"; + tags?: never; + filter_by?: never; + } + | { filter_by: string; tags?: never; query?: never; match?: never }; export interface CurationObjectSchema { id: string; - rule?: CurationRuleSchema; - includes?: CurationIncludeSchema[]; - excludes?: CurationExcludeSchema[]; + rule: CurationRuleSchema; + includes?: { + id: string; + position: number; + }[]; + excludes?: { + id: string; + }[]; filter_by?: string; sort_by?: string; replace_query?: string; remove_matched_tokens?: boolean; filter_curated_hits?: boolean; stop_processing?: boolean; + effective_from_ts?: number; + effective_to_ts?: number; metadata?: Record; } @@ -43,8 +44,6 @@ export interface CurationSetsListEntrySchema { items: CurationObjectSchema[]; } -export type CurationSetsListResponseSchema = CurationSetsListEntrySchema[]; - export interface CurationSetDeleteResponseSchema { name: string; } @@ -53,11 +52,9 @@ export default class CurationSets { constructor(private apiCall: ApiCall) {} static readonly RESOURCEPATH = "/curation_sets"; - async retrieve(): Promise { - return this.apiCall.get( + async retrieve(): Promise { + return this.apiCall.get( CurationSets.RESOURCEPATH, ); } } - -