Exemple #1
0
 private void CustomizeQuery(IDocumentQueryCustomization p, bool waitForNonStaleResults)
 {
     if (waitForNonStaleResults)
     {
         p.WaitForNonStaleResults();
     }
 }
    public void BeforeQueryExecuted(IDocumentQueryCustomization customization)
    {
        var type       = customization.GetType();
        var entityType = type.GetInterfaces()
                         .SingleOrDefault(i => i.IsClosedTypeOf(typeof(IDocumentQuery <>)) ||
                                          i.IsClosedTypeOf(typeof(IAsyncDocumentQuery <>)))
                         ?.GetGenericArguments()
                         .Single();

        if (entityType != null && entityType.IsAssignableTo <ITenantedEntity>())
        {
            // Add the "AND" to the the WHERE clause
            // (the method has a check under the hood to prevent adding "AND" if the "WHERE" is empty)
            type.GetMethod("AndAlso").Invoke(customization, null);
            // Add "TenantId = 'Bla'" into the WHERE clause
            type.GetMethod("WhereEquals",
                           new[] { typeof(string), typeof(object) }
                           )
            .Invoke(customization,
                    new object[]
            {
                nameof(ITenantedEntity.TenantId),
                _resolver.GetCurrentTenantId()
            }
                    );
        }
    }
Exemple #3
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     queryCustomization.BeforeQueryExecution(q =>
     {
         q.Query = "Text: Testing";
     });
 }
Exemple #4
0
        /// <summary>
        /// When running in server mode, customizes the query to return only metadata - conserving http bandwidth.
        /// Does nothing when running in embedded mode.
        /// </summary>
        public static void MetadataOnly(this IDocumentQueryCustomization customization)
        {
            // This is a hack, but there's no other clear way to modify the querystring of the url.
            // It works because it ends of appending "&include=&metadata-only=true",
            // and the first term gets ignored by the server because it has no value.

            customization.Include("&metadata-only=true");
        }
Exemple #5
0
            public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
            {
                var documentQuery = queryCustomization as IDocumentQuery <Company>;

                if (documentQuery != null)
                {
                    documentQuery.WhereEquals(x => x.Address.Country, "USA");
                }
            }
        public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
        {
            // I hate reflection and dynamic, but this works.

            var fieldInfo = queryCustomization.GetType().GetField("includes", BindingFlags.Instance | BindingFlags.NonPublic);

            if (fieldInfo == null)
            {
                throw new InvalidOperationException();
            }

            string effective = null;

            var includes = (HashSet <string>)fieldInfo.GetValue(queryCustomization);

            if (includes != null)
            {
                var filteringDisabledTag = includes.FirstOrDefault(x => x == "__TemporalFilteringDisabled__");
                if (filteringDisabledTag != null)
                {
                    includes.Remove(filteringDisabledTag);
                    return;
                }

                var effectiveTag = includes.FirstOrDefault(x => x.StartsWith("__TemporalEffective__"));
                if (effectiveTag != null)
                {
                    includes.Remove(effectiveTag);
                    effective = effectiveTag.Split('=')[1];
                }
            }

            if (effective == null)
            {
                effective = SystemTime.UtcNow.ToString("o");
            }

            dynamic documentQuery = queryCustomization;
            var     session       = (DocumentSession)documentQuery.Session;
            var     headers       = session.DatabaseCommands.OperationsHeaders;

            headers[TemporalMetadata.RavenTemporalEffective] = effective;

            documentQuery.AfterQueryExecuted((Action <QueryResult>)(result => headers.Remove(TemporalMetadata.RavenTemporalEffective)));
        }
        public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
        {
            // I hate reflection and dynamic, but this works.

            var fieldInfo = queryCustomization.GetType().GetField("includes", BindingFlags.Instance | BindingFlags.NonPublic);
            if (fieldInfo == null)
                throw new InvalidOperationException();

            string effective = null;

            var includes = (HashSet<string>) fieldInfo.GetValue(queryCustomization);
            if (includes != null)
            {
                var filteringDisabledTag = includes.FirstOrDefault(x => x == "__TemporalFilteringDisabled__");
                if (filteringDisabledTag != null)
                {
                    includes.Remove(filteringDisabledTag);
                    return;
                }

                var effectiveTag = includes.FirstOrDefault(x => x.StartsWith("__TemporalEffective__"));
                if (effectiveTag != null)
                {
                    includes.Remove(effectiveTag);
                    effective = effectiveTag.Split('=')[1];
                }
            }

            if (effective == null)
                effective = SystemTime.UtcNow.ToString("o");

            dynamic documentQuery = queryCustomization;
            var session = (DocumentSession) documentQuery.Session;
            var headers = session.DatabaseCommands.OperationsHeaders;

            headers[TemporalMetadata.RavenTemporalEffective] = effective;

            documentQuery.AfterQueryExecuted((Action<QueryResult>) (result => headers.Remove(TemporalMetadata.RavenTemporalEffective)));
        }
Exemple #8
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     queries.Add(queryCustomization.ToString());
 }
Exemple #9
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     Debug.WriteLine(queryCustomization);
 }
 protected abstract void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization);
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     queryCustomization.WaitForNonStaleResults(TimeSpan.FromSeconds(30));
 }
 public static IDocumentQueryCustomization DisableTemporalFiltering(this IDocumentQueryCustomization customization)
 {
     // this gets stripped out later by the listener
     return(customization.Include("__TemporalFilteringDisabled__"));
 }
Exemple #13
0
 /// <summary>
 /// Customizes the query such that any transform results function defined on the index will not be executed,
 /// returning just the raw results instead.
 /// </summary>
 public static IDocumentQueryCustomization SkipTransformResults(this IDocumentQueryCustomization customization)
 {
     return(customization.BeforeQueryExecution(x => x.SkipTransformResults = true));
 }
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     queryCustomization.WaitForNonStaleResultsAsOfNow();
 }
Exemple #15
0
			public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
			{
				Debug.WriteLine(queryCustomization);
			}
Exemple #16
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization customization)
 {
     customization.NoCaching();
 }
Exemple #17
0
 public BeforeQueryEventArgs(InMemoryDocumentSessionOperations session, IDocumentQueryCustomization queryCustomization)
 {
     Session            = session;
     QueryCustomization = queryCustomization;
 }
Exemple #18
0
			public void BeforeQueryExecuted(IDocumentQueryCustomization customization)
			{
				customization.NoCaching();
			}
 void IDocumentQueryListener.BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     BeforeQueryExecuted(queryCustomization);
 }
 public void BeforeQueryExecuted(IDocumentQueryCustomization customization)
 {
     customization.WaitForNonStaleResultsAsOfLastWrite();
 }
Exemple #21
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     queries.Add(queryCustomization.ToString());
 }
Exemple #22
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization customization)
 {
     customization.WaitForNonStaleResults();
 }
 protected override void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     BeforeQueryExecutedCalled = true;
 }
Exemple #24
0
			public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
			{
				queryCustomization.WaitForNonStaleResults();
			}
Exemple #25
0
 public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
 {
     var documentQuery = queryCustomization as IDocumentQuery<NameAndCountry.Result>;
     if (documentQuery != null)
         documentQuery.WhereEquals(x => x.Country, "USA");
 }