UNPKG

@configurator/ravendb

Version:
70 lines 3.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractJavaScriptMultiMapIndexCreationTask = void 0; const IndexDefinition_1 = require("./IndexDefinition"); const StronglyTyped_1 = require("./StronglyTyped"); const TypeUtil_1 = require("../../Utility/TypeUtil"); const Exceptions_1 = require("../../Exceptions"); const StringUtil_1 = require("../../Utility/StringUtil"); const DocumentConventions_1 = require("../Conventions/DocumentConventions"); const StringBuilder_1 = require("../../Utility/StringBuilder"); const BaseJavaScriptIndexCreationTask_1 = require("./BaseJavaScriptIndexCreationTask"); class AbstractJavaScriptMultiMapIndexCreationTask extends BaseJavaScriptIndexCreationTask_1.BaseJavaScriptIndexCreationTask { constructor() { super(); this._maps = []; this.conventions = new DocumentConventions_1.DocumentConventions(); } map(collectionOrDocumentType, definition) { const collection = TypeUtil_1.TypeUtil.isString(collectionOrDocumentType) ? collectionOrDocumentType : this.conventions.findCollectionName(collectionOrDocumentType); const escapedCollection = new StringBuilder_1.StringBuilder(); StringUtil_1.StringUtil.escapeString(escapedCollection, collection); const rawMap = `map('${escapedCollection.toString()}', ${definition})`; this._maps.push(this.postProcessDefinition(rawMap, "map")); } reduce(mapReduce) { const rawReduce = mapReduce(new StronglyTyped_1.IndexingGroupResults()).format(); this._reduce = this.postProcessDefinition(rawReduce, "reduce"); } addSource(name, source) { this.additionalSources ?? (this.additionalSources = {}); const sourceAsString = source.toString(); if (!sourceAsString.includes("function")) { (0, Exceptions_1.throwError)("InvalidOperationException", "Additional sources require named function. Arrow functions are not supported."); } this.additionalSources[name] = source.toString(); } mapUtils() { return new StronglyTyped_1.StubMapUtils(); } get isMapReduce() { return !!this.reduce; } createIndexDefinition() { const indexDefinitionBuilder = new IndexDefinition_1.IndexDefinitionBuilder(this.getIndexName()); indexDefinitionBuilder.indexesStrings = this.indexesStrings; indexDefinitionBuilder.analyzersStrings = this.analyzersStrings; indexDefinitionBuilder.reduce = this._reduce; indexDefinitionBuilder.storesStrings = this.storesStrings; indexDefinitionBuilder.suggestionsOptions = this.indexSuggestions; indexDefinitionBuilder.termVectorsStrings = this.termVectorsStrings; indexDefinitionBuilder.spatialIndexesStrings = this.spatialOptionsStrings; indexDefinitionBuilder.outputReduceToCollection = this.outputReduceToCollection; indexDefinitionBuilder.patternForOutputReduceToCollectionReferences = this.patternForOutputReduceToCollectionReferences; indexDefinitionBuilder.patternReferencesCollectionName = this.patternReferencesCollectionName; indexDefinitionBuilder.additionalSources = this.additionalSources; indexDefinitionBuilder.additionalAssemblies = this.additionalAssemblies; indexDefinitionBuilder.configuration = this.configuration; indexDefinitionBuilder.lockMode = this.lockMode; indexDefinitionBuilder.priority = this.priority; indexDefinitionBuilder.state = this.state; indexDefinitionBuilder.deploymentMode = this.deploymentMode; const indexDefinition = indexDefinitionBuilder.toIndexDefinition(this.conventions, false); indexDefinition.maps = new Set(this._maps); return indexDefinition; } } exports.AbstractJavaScriptMultiMapIndexCreationTask = AbstractJavaScriptMultiMapIndexCreationTask; //# sourceMappingURL=AbstractJavaScriptMultiMapIndexCreationTask.js.map