typesense
Version:
Javascript Library for Typesense
57 lines (49 loc) • 1.61 kB
text/typescript
import ApiCall from "./ApiCall";
import CurationSets from "./CurationSets";
import type {
CurationSetDeleteResponseSchema,
CurationSetSchema,
CurationSetUpsertSchema,
} from "./CurationSets";
import CurationSetItems from "./CurationSetItems";
import CurationSetItem from "./CurationSetItem";
export default class CurationSet {
private readonly _items: CurationSetItems;
private individualItems: Record<string, CurationSetItem> = {};
constructor(
private name: string,
private apiCall: ApiCall,
) {
this._items = new CurationSetItems(this.name, apiCall);
}
async upsert(params: CurationSetUpsertSchema): Promise<CurationSetSchema> {
return this.apiCall.put<CurationSetSchema>(this.endpointPath(), params);
}
async retrieve(): Promise<CurationSetSchema> {
return this.apiCall.get<CurationSetSchema>(this.endpointPath());
}
async delete(): Promise<CurationSetDeleteResponseSchema> {
return this.apiCall.delete<CurationSetDeleteResponseSchema>(
this.endpointPath(),
);
}
items(): CurationSetItems;
items(itemId: string): CurationSetItem;
items(itemId?: string): CurationSetItems | CurationSetItem {
if (itemId === undefined) {
return this._items;
} else {
if (this.individualItems[itemId] === undefined) {
this.individualItems[itemId] = new CurationSetItem(
this.name,
itemId,
this.apiCall,
);
}
return this.individualItems[itemId];
}
}
private endpointPath(): string {
return `${CurationSets.RESOURCEPATH}/${encodeURIComponent(this.name)}`;
}
}