Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
    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);
    }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
                }
            }