@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
124 lines • 5.56 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { TaJson } from "ta-json";
import { EXTENSION_DATA_KEYS } from "../constants/api";
import { EntityQueryResult } from "../contracts/querying/entity-query-result";
import { EntitySearchAfterResult } from "../contracts/querying/entity-search-after-result";
import { EntityIdQueryResult } from "../contracts/querying/id-query-result";
import { MinimalSchema } from "../contracts/querying/minimal-schema";
import Guard from "../guard";
export class QueryingMapper {
constructor(client) {
Guard.notNullOrUndefined(client);
this._client = client;
}
mapEntityQueryResultAsync(resource, query, loadConfiguration) {
return __awaiter(this, void 0, void 0, function* () {
if (resource == null)
return null;
Guard.notNullOrUndefined(query, "query");
const entities = yield this.getEntitiesAsync(resource);
const total = resource.totalItems || 0;
const skip = query.skip || 0;
const result = new EntityQueryResult(this._client, query, loadConfiguration, entities, total, skip);
return result;
});
}
mapEntityIdQueryResultAsync(resource, query) {
return __awaiter(this, void 0, void 0, function* () {
if (resource == null)
return null;
Guard.notNullOrUndefined(query, "query");
const ids = yield this.getEntityIdsAsync(resource);
const total = resource.totalItems || 0;
const skip = query.skip || 0;
const result = new EntityIdQueryResult(this._client, query, ids, total, skip);
return result;
});
}
mapEntitySearchAfterResult(resource) {
return __awaiter(this, void 0, void 0, function* () {
if (resource == null) {
return null;
}
const entities = yield this.getEntitiesForSearchAfterAsync(resource);
const total = resource.totalItems || 0;
const returnedItems = resource.returnedItems || 0;
const result = new EntitySearchAfterResult(entities, total, returnedItems, resource.lastHitData);
return result;
});
}
static getMinimalSchemas(resource) {
const map = {};
const minimalSchema = resource.minimalSchemaList || resource[EXTENSION_DATA_KEYS.minimalSchema];
if (minimalSchema == null) {
return map;
}
const schemaTokens = (minimalSchema instanceof Array
? minimalSchema
: typeof minimalSchema === "string"
? JSON.parse(minimalSchema)
: []);
for (const token of schemaTokens) {
const schema = TaJson.deserialize(token, MinimalSchema);
map[schema.definitionName] = schema;
}
return map;
}
static getMinimalSchemasForSearchAfter(resource) {
const map = {};
const minimalSchema = resource.minimalSchemaList || resource[EXTENSION_DATA_KEYS.minimalSchema];
if (minimalSchema == null) {
return map;
}
const schemaTokens = (minimalSchema instanceof Array
? minimalSchema
: typeof minimalSchema === "string"
? JSON.parse(minimalSchema)
: []);
for (const token of schemaTokens) {
const schema = TaJson.deserialize(token, MinimalSchema);
map[schema.definitionName] = schema;
}
return map;
}
getEntitiesAsync(resource) {
return __awaiter(this, void 0, void 0, function* () {
if (!resource.items || !resource.items.length) {
return [];
}
const schemasMap = QueryingMapper.getMinimalSchemas(resource);
const resources = resource.items.map(item => item.entity);
const entities = yield this._client.entityMapper.mapEntitiesAsync(resources, schemasMap);
return entities;
});
}
getEntitiesForSearchAfterAsync(resource) {
return __awaiter(this, void 0, void 0, function* () {
if (!resource.items || !resource.items.length) {
return [];
}
const schemasMap = QueryingMapper.getMinimalSchemasForSearchAfter(resource);
const entities = yield this._client.entityMapper.mapEntitiesAsync(resource.items, schemasMap);
return entities;
});
}
getEntityIdsAsync(resource) {
return __awaiter(this, void 0, void 0, function* () {
if (!resource.items || !resource.items.length) {
return [];
}
const links = resource.items.map(item => item.link);
const ids = yield this._client.linkHelper.idsFromEntitiesAsync(links);
return ids;
});
}
}
//# sourceMappingURL=querying-mapper.js.map