@kontent-ai/delivery-sdk
Version:
Official Kontent.AI Delivery API SDK
57 lines (48 loc) • 2.03 kB
text/typescript
import { Contracts } from '../../contracts';
import { IDeliveryClientConfig } from '../../config';
import { IItemQueryConfig, IDeliveryNetworkResponse, Responses, ClientTypes, IContentItemDelta } from '../../models';
import { QueryService } from '../../services';
import { BaseListingQuery } from '../common/base-listing-query.class';
export class SyncChangesQuery<TClientTypes extends ClientTypes> extends BaseListingQuery<
TClientTypes,
IContentItemDelta,
Responses.ISyncChangesResponse,
Responses.ISyncChangesAllResponse,
IItemQueryConfig,
Contracts.ISyncChangesContract
> {
protected _queryConfig: IItemQueryConfig = {};
private readonly action: string = '/sync';
constructor(protected config: IDeliveryClientConfig, protected queryService: QueryService<TClientTypes>) {
super(config, queryService);
}
toPromise(): Promise<IDeliveryNetworkResponse<Responses.ISyncChangesResponse, Contracts.ISyncChangesContract>> {
console.warn(
`Sync Api v1 is deprecated. Please use the new Sync Api v2. https://kontent.ai/learn/docs/apis/openapi/sync-api-v2/`
);
return this.queryService.syncChanges(this.getUrl(), this._queryConfig ?? {});
}
getUrl(): string {
return super.resolveUrlInternal(this.action);
}
/**
* Used to configure query
* @param queryConfig Query configuration
*/
queryConfig(queryConfig: IItemQueryConfig): this {
this._queryConfig = queryConfig;
return this;
}
map(json: any): Responses.ISyncChangesResponse {
return this.queryService.mappingService.syncChanges(json);
}
protected allResponseFactory(
items: IContentItemDelta[],
responses: IDeliveryNetworkResponse<Responses.ISyncChangesResponse, Contracts.ISyncChangesContract>[]
): Responses.ISyncChangesAllResponse {
return {
items: items,
responses: responses
};
}
}