public IActionResult SaveFilterKey(FilterKey parm) { RedisHelper.Set(KeyHelper.FilterKey, parm); return(Ok(new ApiResult <string>() { })); }
internal override void TrimInstanceSet(int maxSize, FilterInfo owner) { int count = base.Count; int num = count; if (count <= maxSize) { return; } if (0 < maxSize) { for (num = maxSize; num < count && m_comparer.Compare(m_keys[num - 1], m_keys[num]) == 0; num++) { } for (int i = num; i < count; i++) { FilterKey filterKey = m_keys[i]; m_values.Remove(filterKey.ValueIndex); } m_keys.RemoveRange(num, count - num); return; } if (m_keys != null) { m_keys.Dispose(); } if (m_values != null) { m_values.Dispose(); } m_keys = null; m_values = null; }
internal bool Add(object key, object dataInstance) { FilterKey filterKey = new FilterKey(); filterKey.Key = key; return(m_dataInstances.Add(filterKey, dataInstance, this)); }
public override void TrimInstanceSet(int maxSize, FilterInfo owner) { int count = base.Count; int num = count; if (count > maxSize) { if (0 < maxSize) { for (num = maxSize; num < count && base.m_comparer.Compare(base.m_keys[num - 1], base.m_keys[num]) == 0; num++) { } for (int i = num; i < count; i++) { FilterKey filterKey = base.m_keys[i]; base.m_values.Remove(filterKey.ValueIndex); } base.m_keys.RemoveRange(num, count - num); } else { if (base.m_keys != null) { base.m_keys.Dispose(); } if (base.m_values != null) { base.m_values.Dispose(); } base.m_keys = null; base.m_values = null; } } }
private async Task <IList> ListUsingQueryCacheAsync(HashSet <string> querySpaces, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion); ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters); List <IType[]> resultTypesList = new List <IType[]>(); int[] maxRows = new int[loaders.Count]; int[] firstRows = new int[loaders.Count]; for (int i = 0; i < loaders.Count; i++) { resultTypesList.Add(loaders[i].ResultTypes); firstRows[i] = parameters[i].RowSelection.FirstRow; maxRows[i] = parameters[i].RowSelection.MaxRows; } MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList); QueryParameters combinedParameters = CreateCombinedQueryParameters(); QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null) .SetFirstRows(firstRows) .SetMaxRows(maxRows); IList result = await(assembler.GetResultFromQueryCacheAsync(session, combinedParameters, querySpaces, queryCache, key, cancellationToken)).ConfigureAwait(false); if (factory.Statistics.IsStatisticsEnabled) { if (result == null) { factory.StatisticsImplementor.QueryCacheMiss(key.ToString(), queryCache.RegionName); } else { factory.StatisticsImplementor.QueryCacheHit(key.ToString(), queryCache.RegionName); } } if (result == null) { log.Debug("Cache miss for multi criteria query"); IList list = await(DoListAsync(cancellationToken)).ConfigureAwait(false); result = list; if (session.CacheMode.HasFlag(CacheMode.Put)) { bool put = await(queryCache.PutAsync(key, new ICacheAssembler[] { assembler }, new object[] { list }, combinedParameters.NaturalKeyLookup, session, cancellationToken)).ConfigureAwait(false); if (put && factory.Statistics.IsStatisticsEnabled) { factory.StatisticsImplementor.QueryCachePut(key.ToString(), queryCache.RegionName); } } } return(GetResultList(result)); }
private List <string> GetMarksFilterByKeys(IEnumerable <string> marks, FilterKey filter) { var silverKeys = SessionService.Get <List <string> >(filter.ToString()); var keys = new List <string>(silverKeys); return(marks.Where(mark => keys.Contains(mark) || _marksHelper.IsFakeMark(mark)).ToList()); }
public async Task <IActionResult> SaveFilterKey(FilterKey parm) { await _cache.SetAsync(KeyHelper.FilterKey, parm); return(Ok(new ApiResult <string>() { })); }
public void CreateItemKeyShouldFailWhenKeyIsNull() { // Arrange FilterKey filterKey = new FilterKey("key"); // Act Action ctor = () => { new Item(null, filterKey); }; // Assert ctor.Should().Throw <ArgumentException>().WithMessage($"*key*"); }
public void CreateFilterKeyShouldProperlyInitializeProperties() { // Arrange var value = "key"; // Act var itemKey = new FilterKey(value); // Assert itemKey.Value.Should().Be(value); }
public void ListShouldContainAllDefinitions() { // Arrange var type = typeof(FilterKey); var expectedCount = type.GetFields(BindingFlags.Public | BindingFlags.Static).Count(f => f.FieldType == type); // Act var listCount = FilterKey.List().Count(); // Assert listCount.Should().Be(expectedCount); }
public void CreateItemShouldSucceed() { // Arrange ItemKey key = new ItemKey("#key"); FilterKey filterKey = new FilterKey("key"); // Act Action ctor = () => { new Item(key, filterKey); }; // Assert ctor.Should().NotThrow(); }
public void ItemAndFilterKeysCountShouldBeEqual() { // Arrange var itemKeyCount = ItemKey.List().Count(); var filterKeyCount = FilterKey.List().Count(); // Act var result = itemKeyCount == filterKeyCount; // Assert result.Should().BeTrue(); }
private void FilterDescValueToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue) { const string filterName = "DescriptionEqualAndValueGT"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pDesc", "something").SetParameter("pValue", 10); fk = new FilterKey(f); var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f1.SetParameter("pDesc", "something").SetParameter("pValue", sameValue ? 10 : 11); fk1 = new FilterKey(f1); }
private void FilterDescLikeToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue) { const string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); fk = new FilterKey(f); var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f1.SetParameter("pLike", sameValue ? "so%" : "%ing"); fk1 = new FilterKey(f1); }
public async Task <IActionResult> GetFilterKey() { var key = await _cache.GetAsync <FilterKey>(KeyHelper.FilterKey); if (key == null) { key = new FilterKey(); } return(Ok(new ApiResult <FilterKey>() { data = key })); }
public void CreateItemShouldProperlyInitializeProperties() { // Arrange ItemKey key = new ItemKey("#key"); FilterKey filterKey = new FilterKey("key"); // Act var item = new Item(key, filterKey); // Assert item.Key.Should().Be(key); item.FilterKey.Should().Be(filterKey); }
public IActionResult GetFilterKey() { var key = RedisHelper.Get <FilterKey>(KeyHelper.FilterKey); if (key == null) { key = new FilterKey(); } return(Ok(new ApiResult <FilterKey>() { data = key })); }
private void FilterDescValueToCompare(out FilterKey fk, out FilterKey fk1) { const string filterName = "DescriptionEqualAndValueGT"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pDesc", "something").SetParameter("pValue", 10); fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f1.SetParameter("pDesc", "something").SetParameter("pValue", 11); fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); }
private void FilterDescLikeToCompare(out FilterKey fk, out FilterKey fk1) { const string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f1.SetParameter("pLike", "%ing"); fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); }
public void ToStringIncludeAll() { string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(f); Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike['[pLike, so%]']]"), "Like"); filterName = "DescriptionEqualAndValueGT"; f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pDesc", "something").SetParameter("pValue", 10); fk = new FilterKey(f); Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT['[pDesc, something]', '[pValue, 10]']]"), "Value"); }
public void ToStringIncludeAll() { string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike{'pLike'='so%'}]")); filterName = "DescriptionEqualAndValueGT"; f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pDesc", "something").SetParameter("pValue", 10); fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT{'pDesc'='something', 'pValue'='10'}]")); }
protected int Search(FilterKey key) { Global.Tracer.Assert(m_keys != null, "(null != m_keys)"); int num = m_keys.BinarySearch(key, m_comparer); if (num < 0) { num = ~num; } else { for (num++; num < m_keys.Count && m_comparer.Compare(m_keys[num - 1], m_keys[num]) == 0; num++) { } } return(num); }
private void FilterValueInToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue) { const string filterName = "ValueIn"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameterList("pIn", new HashSet <int> { 10, 11 }); fk = new FilterKey(f); var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f1.SetParameterList("pIn", sameValue ? (ICollection <int>) new [] { 10, 11 } : new HashSet <int> { 10, 12 }); fk1 = new FilterKey(f1); }
private async Task <IList> ListUsingQueryCacheAsync(CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion); ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters); ISet <string> querySpaces = new HashSet <string>(); List <IType[]> resultTypesList = new List <IType[]>(Translators.Count); for (int i = 0; i < Translators.Count; i++) { ITranslator queryTranslator = Translators[i]; querySpaces.UnionWith(queryTranslator.QuerySpaces); resultTypesList.Add(queryTranslator.ReturnTypes); } int[] firstRows = new int[Parameters.Count]; int[] maxRows = new int[Parameters.Count]; for (int i = 0; i < Parameters.Count; i++) { RowSelection rowSelection = Parameters[i].RowSelection; firstRows[i] = rowSelection.FirstRow; maxRows[i] = rowSelection.MaxRows; } MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList); QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null) .SetFirstRows(firstRows) .SetMaxRows(maxRows); IList result = await(assembler.GetResultFromQueryCacheAsync(session, combinedParameters, querySpaces, queryCache, key, cancellationToken)).ConfigureAwait(false); if (result == null) { log.Debug("Cache miss for multi query"); var list = await(DoListAsync(cancellationToken)).ConfigureAwait(false); await(queryCache.PutAsync(key, new ICacheAssembler[] { assembler }, new object[] { list }, false, session, cancellationToken)).ConfigureAwait(false); result = list; } return(GetResultList(result)); }
private IList ListUsingQueryCache() { IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion); ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters, session.EntityMode); ISet <string> querySpaces = new HashedSet <string>(); List <IType[]> resultTypesList = new List <IType[]>(Translators.Count); for (int i = 0; i < Translators.Count; i++) { ITranslator queryTranslator = Translators[i]; querySpaces.AddAll(queryTranslator.QuerySpaces); resultTypesList.Add(queryTranslator.ReturnTypes); } int[] firstRows = new int[Parameters.Count]; int[] maxRows = new int[Parameters.Count]; for (int i = 0; i < Parameters.Count; i++) { RowSelection rowSelection = Parameters[i].RowSelection; firstRows[i] = rowSelection.FirstRow; maxRows[i] = rowSelection.MaxRows; } MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList); QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys) .SetFirstRows(firstRows) .SetMaxRows(maxRows); IList result = assembler.GetResultFromQueryCache(session, combinedParameters, querySpaces, queryCache, key); if (result == null) { log.Debug("Cache miss for multi query"); var list = DoList(); queryCache.Put(key, new ICacheAssembler[] { assembler }, new object[] { list }, false, session); result = list; } return(GetResultList(result)); }
private IList ListUsingQueryCache() { IQueryCache queryCache = session.Factory.GetQueryCache(cacheRegion); ISet <FilterKey> filterKeys = FilterKey.CreateFilterKeys(session.EnabledFilters, session.EntityMode); ISet <string> querySpaces = new HashSet <string>(); List <IType[]> resultTypesList = new List <IType[]>(); int[] maxRows = new int[loaders.Count]; int[] firstRows = new int[loaders.Count]; for (int i = 0; i < loaders.Count; i++) { querySpaces.UnionWith(loaders[i].QuerySpaces); resultTypesList.Add(loaders[i].ResultTypes); firstRows[i] = parameters[i].RowSelection.FirstRow; maxRows[i] = parameters[i].RowSelection.MaxRows; } MultipleQueriesCacheAssembler assembler = new MultipleQueriesCacheAssembler(resultTypesList); QueryParameters combinedParameters = CreateCombinedQueryParameters(); QueryKey key = new QueryKey(session.Factory, SqlString, combinedParameters, filterKeys, null) .SetFirstRows(firstRows) .SetMaxRows(maxRows); IList result = assembler.GetResultFromQueryCache(session, combinedParameters, querySpaces, queryCache, key); if (result == null) { log.Debug("Cache miss for multi criteria query"); IList list = DoList(); queryCache.Put(key, new ICacheAssembler[] { assembler }, new object[] { list }, combinedParameters.NaturalKeyLookup, session); result = list; } return(GetResultList(result)); }
public void ToStringWithMoreFilters() { string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); filterName = "DescriptionEqualAndValueGT"; var fv = new FilterImpl(Sfi.GetFilterDefinition(filterName)); fv.SetParameter("pDesc", "something").SetParameter("pValue", 10); var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); ISet <FilterKey> fks = new HashSet <FilterKey> { fk, fvk }; var qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null); Assert.That(qk.ToString(), Does.Contain(string.Format("filters: ['{0}', '{1}']", fk, fvk))); }
public void ToStringWithMoreFilters() { string filterName = "DescriptionLike"; var f = new FilterImpl(sessions.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco); filterName = "DescriptionEqualAndValueGT"; var fv = new FilterImpl(sessions.GetFilterDefinition(filterName)); fv.SetParameter("pDesc", "something").SetParameter("pValue", 10); var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco); ISet <FilterKey> fks = new HashedSet <FilterKey> { fk, fvk }; var qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks); Assert.That(qk.ToString(), Is.StringContaining(string.Format("filters: ['{0}', '{1}']", fk, fvk))); }
private void QueryKeyFilterDescLikeToCompare(out QueryKey qk, out QueryKey qk1) { const string filterName = "DescriptionLike"; var f = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); ISet <FilterKey> fks = new HashSet <FilterKey> { fk }; qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null); var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName)); f1.SetParameter("pLike", "%ing"); var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes); fks = new HashSet <FilterKey> { fk1 }; qk1 = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null); }
private void QueryKeyFilterDescLikeToCompare(out QueryKey qk, out QueryKey qk1) { const string filterName = "DescriptionLike"; var f = new FilterImpl(sessions.GetFilterDefinition(filterName)); f.SetParameter("pLike", "so%"); var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco); ISet <FilterKey> fks = new HashedSet <FilterKey> { fk }; qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks); var f1 = new FilterImpl(sessions.GetFilterDefinition(filterName)); f1.SetParameter("pLike", "%ing"); var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco); fks = new HashedSet <FilterKey> { fk1 }; qk1 = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks); }