예제 #1
0
        public TResult Load <TResult>(string id, Type transformerType, Action <ILoadConfiguration> configure = null)
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;

            return(LoadInternal <TResult>(new[] { id }, null, transformer, configuration.TransformerParameters).FirstOrDefault());
        }
예제 #2
0
        public TResult[] Load <TResult>(IEnumerable <string> ids, Type transformerType, Action <ILoadConfiguration> configure = null)
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;

            return(LoadInternal <TResult>(ids.ToArray(), null, transformer, configuration.TransformerParameters));
        }
예제 #3
0
        public async Task <TResult[]> LoadAsync <TResult>(IEnumerable <string> ids, Type transformerType, Action <ILoadConfiguration> configure = null, CancellationToken token = default(CancellationToken))
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;

            return(await LoadUsingTransformerInternalAsync <TResult>(ids.ToArray(), null, transformer, configuration.TransformerParameters, token).ConfigureAwait(false));
        }
예제 #4
0
        public async Task <TResult> LoadAsync <TResult>(string id, string transformer, Action <ILoadConfiguration> configure = null, CancellationToken token = default(CancellationToken))
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var result = await LoadUsingTransformerInternalAsync <TResult>(new[] { id }, null, transformer, configuration.TransformerParameters, token).ConfigureAwait(false);

            return(result.FirstOrDefault());
        }
예제 #5
0
        public async Task <TResult[]> LoadAsync <TTransformer, TResult>(IEnumerable <string> ids, Action <ILoadConfiguration> configure = null, CancellationToken token = default(CancellationToken)) where TTransformer : AbstractTransformerCreationTask, new()
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var result = await LoadUsingTransformerInternalAsync <TResult>(ids.ToArray(), null, new TTransformer().TransformerName, configuration.TransformerParameters, token).ConfigureAwait(false);

            return(result);
        }
예제 #6
0
        public async Task <T> LoadAsync <TTransformer, T>(string id, Action <ILoadConfiguration> configure = null, CancellationToken token = default(CancellationToken)) where TTransformer : AbstractTransformerCreationTask, new()
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var result = await LoadUsingTransformerInternalAsync <T>(new[] { id }, null, new TTransformer().TransformerName, configuration.TransformerParameters, token).ConfigureAwait(false);

            return(result.FirstOrDefault());
        }
예제 #7
0
        public async Task <TResult[]> LoadAsync <TTransformer, TResult>(IEnumerable <string> ids, Action <ILoadConfiguration> configure = null) where TTransformer : AbstractTransformerCreationTask, new()
        {
            var transformer   = new TTransformer();
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var result = await LoadAsyncInternal <TResult>(ids.ToArray(), null, transformer.TransformerName, configuration.TransformerParameters).ConfigureAwait(false);

            return(result);
        }
        public async Task <TResult> LoadAsync <TResult>(string id, Type transformerType,
                                                        Action <ILoadConfiguration> configure = null,
                                                        CancellationToken token = new CancellationToken())
        {
            var configuration = new RavenLoadConfiguration();

            configure?.Invoke(configuration);

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;

            var result = await LoadUsingTransformerInternalAsync <TResult>(new[] { id }, null, transformer, configuration.TransformerParameters, token).ConfigureAwait(false);

            return(result.FirstOrDefault());
        }
예제 #9
0
        public async Task <TResult[]> LoadAsync <TResult>(IEnumerable <string> ids, Type transformerType, Action <ILoadConfiguration> configure = null)
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;

            var result = await LoadAsyncInternal <TResult>(ids.ToArray(), null, transformer, configuration.TransformerParameters).ConfigureAwait(false);

            return(result);
        }
예제 #10
0
        public async Task <TResult> LoadAsync <TResult>(string id, Type transformerType, Action <ILoadConfiguration> configure = null)
        {
            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;

            var result = await LoadAsyncInternal <TResult>(new[] { id }, null, transformer, configuration.TransformerParameters).ConfigureAwait(false);

            return(result.FirstOrDefault());
        }
예제 #11
0
        public Task <IEnumerable <TResult> > LoadStartingWithAsync <TTransformer, TResult>(string keyPrefix, string matches = null, int start = 0, int pageSize = 25,
                                                                                           string exclude = null, RavenPagingInformation pagingInformation = null,
                                                                                           Action <ILoadConfiguration> configure = null) where TTransformer : AbstractTransformerCreationTask, new()
        {
            var transformer = new TTransformer().TransformerName;

            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            return(AsyncDatabaseCommands.StartsWithAsync(keyPrefix, matches, start, pageSize, exclude: exclude,
                                                         pagingInformation: pagingInformation, transformer: transformer,
                                                         queryInputs: configuration.QueryInputs)
                   .ContinueWith(
                       task => (IEnumerable <TResult>)task.Result.Select(TrackEntity <TResult>).ToList()));
        }
예제 #12
0
        Lazy <Task <TResult> > IAsyncLazySessionOperations.LoadAsync <TResult>(string id, Type transformerType, Action <ILoadConfiguration> configure, Action <TResult> onEval, CancellationToken token)
        {
            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;
            var ids         = new[] { id };

            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var lazyLoadOperation = new LazyTransformerLoadOperation <TResult>(
                ids,
                transformer,
                configuration.TransformerParameters,
                new LoadTransformerOperation(this, transformer, ids),
                singleResult: true);

            return(AddLazyOperation(lazyLoadOperation, onEval, token));
        }
예제 #13
0
        public Task <IEnumerable <TResult> > LoadStartingWithAsync <TTransformer, TResult>(string keyPrefix, string matches = null, int start = 0, int pageSize = 25,
                                                                                           string exclude = null, RavenPagingInformation pagingInformation = null,
                                                                                           Action <ILoadConfiguration> configure = null,
                                                                                           string skipAfter = null, CancellationToken token = default(CancellationToken)) where TTransformer : AbstractTransformerCreationTask, new()
        {
            var transformer = new TTransformer().TransformerName;

            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }
            var queryOperation = new QueryOperation(this, "Load/StartingWith", null, null, false, TimeSpan.Zero, null, null, false);

            return(AsyncDatabaseCommands.StartsWithAsync(keyPrefix, matches, start, pageSize, exclude: exclude,
                                                         pagingInformation: pagingInformation, transformer: transformer,
                                                         transformerParameters: configuration.TransformerParameters,
                                                         skipAfter: skipAfter, token: token)
                   .ContinueWith(
                       task => (IEnumerable <TResult>)task.Result.Select(x => queryOperation.Deserialize <TResult>(x.ToJson())).ToList(), token));
        }
예제 #14
0
        Lazy <TResult[]> ILazySessionOperations.Load <TResult>(IEnumerable <string> ids, Type transformerType, Action <ILoadConfiguration> configure, Action <TResult> onEval)
        {
            var idsArray = ids.ToArray();
            var cmds     = GetCommandsToOperateOn(new ShardRequestData
            {
                Keys       = idsArray,
                EntityType = transformerType
            });

            var transformer = ((AbstractTransformerCreationTask)Activator.CreateInstance(transformerType)).TransformerName;
            var op          = new LoadTransformerOperation(this, transformer, idsArray);

            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            var lazyLoadOperation = new LazyTransformerLoadOperation <TResult>(idsArray, transformer, configuration.TransformerParameters, op, false);

            return(AddLazyOperation <TResult[]>(lazyLoadOperation, null, cmds));
        }
        public TResult[] LoadStartingWith <TTransformer, TResult>(string keyPrefix, string matches = null, int start = 0,
                                                                  int pageSize = 25, string exclude = null,
                                                                  RavenPagingInformation pagingInformation = null,
                                                                  Action <ILoadConfiguration> configure    = null,
                                                                  string skipAfter = null) where TTransformer : AbstractTransformerCreationTask, new()
        {
            var transformer = new TTransformer().TransformerName;

            var configuration = new RavenLoadConfiguration();

            if (configure != null)
            {
                configure(configuration);
            }

            IncrementRequestCount();
            var shards = GetCommandsToOperateOn(new ShardRequestData
            {
                EntityType = typeof(TResult),
                Keys       = { keyPrefix }
            });

            var results = shardStrategy.ShardAccessStrategy.Apply(shards, new ShardRequestData
            {
                EntityType = typeof(TResult),
                Keys       = { keyPrefix }
            },
                                                                  (dbCmd, i) =>
                                                                  dbCmd.StartsWith(keyPrefix, matches, start, pageSize,
                                                                                   exclude: exclude, transformer: transformer,
                                                                                   transformerParameters: configuration.TransformerParameters,
                                                                                   skipAfter: skipAfter));
            var queryOperation = new QueryOperation(this, "Load/StartingWith", null, null, false, TimeSpan.Zero, null, null, false);

            return(results.SelectMany(x => x).Select(x => queryOperation.Deserialize <TResult>(x.ToJson()))
                   .ToArray());
        }