diff --git a/packages/sdk-js/src/items.ts b/packages/sdk-js/src/items.ts index 1482e64de6..3f7b6de302 100644 --- a/packages/sdk-js/src/items.ts +++ b/packages/sdk-js/src/items.ts @@ -1,4 +1,4 @@ -import { Query, Item } from './types'; +import { Query, Item, Payload, Response } from './types'; import { AxiosInstance } from 'axios'; export class Items { @@ -10,15 +10,22 @@ export class Items { this.axios = axios; } - async read(query?: Query): Promise; - async read(query: Query & { single: true }): Promise; - async read(key: string | number, query?: Query): Promise; - async read(keys: (string | number)[], query?: Query): Promise; - async read(keys: (string | number)[], query: Query & { single: true }): Promise; + async create(payload: Payload, query?: Query): Promise>; + async create(payloads: Payload[], query?: Query): Promise>; + async create(payloads: Payload | Payload[], query?: Query): Promise> { + const result = await this.axios.post(`/items/${this.collection}/`, payloads, { + params: query, + }); + return result.data; + } + + async read(query?: Query): Promise>; + async read(key: string | number, query?: Query): Promise>; + async read(keys: (string | number)[], query?: Query): Promise>; async read( keysOrQuery?: string | number | (string | number)[] | Query, query?: Query & { single: boolean } - ): Promise { + ): Promise> { let keys: string | number | (string | number)[] | null = null; if ( @@ -42,7 +49,7 @@ export class Items { params = keysOrQuery as Query; } - let endpoint = `/items/`; + let endpoint = `/items/${this.collection}/`; if (keys) { endpoint += keys; diff --git a/packages/sdk-js/src/types.ts b/packages/sdk-js/src/types.ts index 8877572c6f..17172e7927 100644 --- a/packages/sdk-js/src/types.ts +++ b/packages/sdk-js/src/types.ts @@ -6,6 +6,11 @@ export enum Meta { FILTER_COUNT = 'filter_count', } +export type Response = { + data: T | null; + meta?: Record; +}; + export type Query = { fields?: string | string[]; sort?: string;