public virtual void Initialize(bool debugMode) { if (_behaviorFunctions != null) { _behaviorFunctionsRun = Database.Scripts.GetScriptRunner(_behaviorFunctions, true, out BehaviorsScript); if (debugMode) { BehaviorsScript.DebugMode = true; } } _returnMainRun = Database.Scripts.GetScriptRunner(_mainScript, true, out DocumentScript); if (DocumentScript == null) { return; } if (debugMode) { DocumentScript.DebugMode = true; } DocumentScript.ScriptEngine.SetValue(Transformation.LoadTo, new ClrFunctionInstance(DocumentScript.ScriptEngine, Transformation.LoadTo, LoadToFunctionTranslator)); for (var i = 0; i < LoadToDestinations.Length; i++) { var collection = LoadToDestinations[i]; var name = Transformation.LoadTo + collection; var clrFunctionInstance = new ClrFunctionInstance(DocumentScript.ScriptEngine, name, (value, values) => LoadToFunctionTranslator(collection, value, values)); DocumentScript.ScriptEngine.SetValue(name, clrFunctionInstance); } DocumentScript.ScriptEngine.SetValue(Transformation.LoadAttachment, new ClrFunctionInstance(DocumentScript.ScriptEngine, Transformation.LoadAttachment, LoadAttachment)); const string loadCounter = Transformation.CountersTransformation.Load; DocumentScript.ScriptEngine.SetValue(loadCounter, new ClrFunctionInstance(DocumentScript.ScriptEngine, loadCounter, LoadCounter)); const string loadTimeSeries = Transformation.TimeSeriesTransformation.LoadTimeSeries.Name; DocumentScript.ScriptEngine.SetValue(loadTimeSeries, new ClrFunctionInstance(DocumentScript.ScriptEngine, loadTimeSeries, LoadTimeSeries)); DocumentScript.ScriptEngine.SetValue("getAttachments", new ClrFunctionInstance(DocumentScript.ScriptEngine, "getAttachments", GetAttachments)); DocumentScript.ScriptEngine.SetValue("hasAttachment", new ClrFunctionInstance(DocumentScript.ScriptEngine, "hasAttachment", HasAttachment)); DocumentScript.ScriptEngine.SetValue("getCounters", new ClrFunctionInstance(DocumentScript.ScriptEngine, "getCounters", GetCounters)); DocumentScript.ScriptEngine.SetValue("hasCounter", new ClrFunctionInstance(DocumentScript.ScriptEngine, "hasCounter", HasCounter)); const string hasTimeSeries = Transformation.TimeSeriesTransformation.HasTimeSeries.Name; DocumentScript.ScriptEngine.SetValue(hasTimeSeries, new ClrFunctionInstance(DocumentScript.ScriptEngine, hasTimeSeries, HasTimeSeries)); const string getTimeSeries = Transformation.TimeSeriesTransformation.GetTimeSeries.Name; DocumentScript.ScriptEngine.SetValue(getTimeSeries, new ClrFunctionInstance(DocumentScript.ScriptEngine, getTimeSeries, GetTimeSeries)); }
public JsPatcher(RootCollection collection, DocumentsOperationContext context) { if (string.IsNullOrWhiteSpace(collection.Patch)) { return; } _context = context; var patchRequest = new PatchRequest(collection.Patch, PatchRequestType.None); scriptRunner = context.DocumentDatabase.Scripts.GetScriptRunner(patchRequest, true, out _runner); }
public QueryFilter(Index index, IndexQueryServerSide query, DocumentsOperationContext documentsContext, Reference <int> skippedResults, Reference <int> scannedDocuments, IQueryResultRetriever retriever, QueryTimingsScope queryTimings) { _query = query; _documentsContext = documentsContext; _skippedResults = skippedResults; _scannedDocuments = scannedDocuments; _retriever = retriever; _queryTimings = queryTimings; var key = new CollectionQueryEnumerable.FilterKey(query.Metadata); _filterSingleRun = index.DocumentDatabase.Scripts.GetScriptRunner(key, readOnly: true, patchRun: out _filterScriptRun); }
public void Initalize() { _returnRun = Database.Scripts.GetScriptRunner(_key, true, out SingleRun); if (SingleRun == null) { return; } SingleRun.ScriptEngine.SetValue(Transformation.LoadTo, new ClrFunctionInstance(SingleRun.ScriptEngine, LoadToFunctionTranslator)); SingleRun.ScriptEngine.SetValue(Transformation.LoadAttachment, new ClrFunctionInstance(SingleRun.ScriptEngine, LoadAttachment)); for (var i = 0; i < LoadToDestinations.Length; i++) { var collection = LoadToDestinations[i]; var clrFunctionInstance = new ClrFunctionInstance(SingleRun.ScriptEngine, (value, values) => LoadToFunctionTranslator(collection, value, values)); SingleRun.ScriptEngine.SetValue(Transformation.LoadTo + collection, clrFunctionInstance); } }
public virtual void Initialize(bool debugMode) { if (_behaviorFunctions != null) { _behaviorFunctionsRun = Database.Scripts.GetScriptRunner(_behaviorFunctions, true, out BehaviorsScript); if (debugMode) { BehaviorsScript.DebugMode = true; } } _returnMainRun = Database.Scripts.GetScriptRunner(_mainScript, true, out DocumentScript); if (DocumentScript == null) { return; } if (debugMode) { DocumentScript.DebugMode = true; } DocumentScript.ScriptEngine.SetValue(Transformation.LoadTo, new ClrFunctionInstance(DocumentScript.ScriptEngine, LoadToFunctionTranslator)); for (var i = 0; i < LoadToDestinations.Length; i++) { var collection = LoadToDestinations[i]; var clrFunctionInstance = new ClrFunctionInstance(DocumentScript.ScriptEngine, (value, values) => LoadToFunctionTranslator(collection, value, values)); DocumentScript.ScriptEngine.SetValue(Transformation.LoadTo + collection, clrFunctionInstance); } DocumentScript.ScriptEngine.SetValue(Transformation.LoadAttachment, new ClrFunctionInstance(DocumentScript.ScriptEngine, LoadAttachment)); DocumentScript.ScriptEngine.SetValue(Transformation.LoadCounter, new ClrFunctionInstance(DocumentScript.ScriptEngine, LoadCounter)); DocumentScript.ScriptEngine.SetValue("getAttachments", new ClrFunctionInstance(DocumentScript.ScriptEngine, GetAttachments)); DocumentScript.ScriptEngine.SetValue("hasAttachment", new ClrFunctionInstance(DocumentScript.ScriptEngine, HasAttachment)); DocumentScript.ScriptEngine.SetValue("getCounters", new ClrFunctionInstance(DocumentScript.ScriptEngine, GetCounters)); DocumentScript.ScriptEngine.SetValue("hasCounter", new ClrFunctionInstance(DocumentScript.ScriptEngine, HasCounter)); }
public Enumerator(DocumentDatabase database, DocumentsStorage documents, FieldsToFetch fieldsToFetch, string collection, bool isAllDocsCollection, IndexQueryServerSide query, QueryTimingsScope queryTimings, DocumentsOperationContext context, IncludeDocumentsCommand includeDocumentsCommand, IncludeRevisionsCommand includeRevisionsCommand, IncludeCompareExchangeValuesCommand includeCompareExchangeValuesCommand, Reference <int> totalResults, Reference <int> scannedResults, string startAfterId, Reference <long> alreadySeenIdsCount, DocumentFields fields, Reference <long> skippedResults, CancellationToken token) { _documents = documents; _fieldsToFetch = fieldsToFetch; _collection = collection; _isAllDocsCollection = isAllDocsCollection; _query = query; _queryTimings = queryTimings; _context = context; _totalResults = totalResults; _scannedResults = scannedResults; _totalResults.Value = 0; _startAfterId = startAfterId; _alreadySeenIdsCount = alreadySeenIdsCount; _fields = fields; _skippedResults = skippedResults; _token = token; if (_fieldsToFetch.IsDistinct) { _alreadySeenProjections = new HashSet <ulong>(); } _resultsRetriever = new MapQueryResultRetriever(database, query, queryTimings, documents, context, fieldsToFetch, includeDocumentsCommand, includeCompareExchangeValuesCommand, includeRevisionsCommand); (_ids, _startsWith) = ExtractIdsFromQuery(query, context); if (_query.Metadata.FilterScript != null) { var key = new FilterKey(_query.Metadata); _releaseFilterScriptRunner = database.Scripts.GetScriptRunner(key, readOnly: true, patchRun: out _filterScriptRun); } }