예제 #1
0
        async public Task <object> Handle(SearchyRequest searchyRequest, bool lookup = false, string searchPhrase = null)
        {
            //var qry = i18NService.Currencies.List()
            //        .Where(c => string.IsNullOrWhiteSpace(searchPhrase) ? true : c.Code.ToLower().Contains(searchPhrase.ToLower())).AsQueryable();


            //if (lookup)
            //{
            //    IDictionary<string, string> dict = qry.OrderBy(c => c.Code)
            //        .ToDictionary(c => c.Code, c => c.Code);

            //    return dict;
            //}

            //var result = qry
            //    .Search(searchyRequest.Conditions)
            //    .ToList();

            //return Task.FromResult(new SearchyResponse<Currency>
            //{
            //    Result = result,
            //    TotalCount = result.Count
            //});

            return(null);
        }
        public void TestSearchyRequestEquality3()
        {
            var sr1 = new SearchyRequest();

            sr1.Conditions.Add(
                new SearchyCondition(new SearchyFilter
            {
                Field        = "Id",
                Rule         = SearchyRule.EqualsTo,
                ValueDecimal = 5
            }));

            var sr2 = new SearchyRequest();

            sr2.Conditions.Add(new SearchyCondition(new SearchyFilter
            {
                Field        = "Id",
                Rule         = SearchyRule.EqualsTo,
                ValueDecimal = 5
            }));

            var result = sr1 == sr2;

            Assert.IsTrue(result);
        }
        public void TestSearchyRequestEquality4()
        {
            var sr1    = new SearchyRequest("Id", SearchyRule.EqualsTo, new string[] { "ss" });
            var sr2    = new SearchyRequest("Id", SearchyRule.EqualsTo, new string[] { "ss" });
            var result = sr1 == sr2;

            Assert.IsTrue(result);
        }
        public void TestSearchyRequestEquality2()
        {
            //int? x = 5;
            var sr1    = new SearchyRequest("Id", SearchyRule.EqualsTo, 5.0);
            var sr2    = new SearchyRequest("Id", SearchyRule.EqualsTo, 5.0);
            var result = sr1 == sr2;

            Assert.IsTrue(result);
        }
예제 #5
0
        async public Task <object> Handle(SearchyRequest request, bool lookup = false, string searchPhrase = null)
        {
            //await Task.Delay(TimeSpan.FromMilliseconds(500));

            var result = FakeEmployees.Data.AsQueryable().Search(request.Conditions, request.Sorts, request.PageSize, request.PageIndex);

            return(new SearchyResponse <Employee>
            {
                Result = result,
                TotalCount = FakeEmployees.Data.AsQueryable().Search(request.Conditions).Count()
            });
        }
예제 #6
0
            async public Task TestMethod1()
            {
                var req = new SearchyRequest()
                {
                    Conditions = new List <SearchyCondition>()
                    {
                        new SearchyCondition()
                        {
                            Filters = new List <SearchyFilter>()
                            {
                                new SearchyFilter()
                                {
                                    Field       = "HAWB",
                                    Rule        = SearchyRule.Contains,
                                    ValueString = "2020"
                                }
                            }
                        }
                    },
                    PageIndex = 0,
                    PageSize  = 12,
                    Sorts     = new List <SearchySort>()
                    {
                        new SearchySort()
                        {
                            Field = "ID", Sort = SearchySortOrder.DEC
                        }
                    }
                };


                using (var connection = new SqliteConnection("Data Source=./Data/TestDb.db"))
                {
                    await connection.OpenAsync();

                    //await connection.Add(bag);

                    //bag.Description = "ttt";

                    //await connection.Update(bag);
                    var bags = await connection.Count <LegacyParcel>(req.Conditions);

                    //  var bag1 = await connection.One<LegacyParcel>(20);

                    //var condition = new SearchyCondition();

                    //condition.Filters.Add(new SearchyFilter("Id", SearchyRule.EqualsTo, 1));
                    //condition.Filters.Add(new SearchyFilter("Description", SearchyRule.StartsWith, "f"));


                    //var selectedBags = await connection.All<Bag>(condition);
                }
            }
예제 #7
0
        async public Task <object> Handle(SearchyRequest searchyRequest, bool lookup = false, string searchPhrase = null)
        {
            IDictionary <string, string> result = new Dictionary <string, string>()
            {
                { "1", "Text1" },
                { "2", "Text2" },
                { "3", "Text3" },
                { "4", "Text4" },
                { "5", "Text5" },
            };

            return(result);
        }
        public void TestSearchyRequestSerialization()
        {
            var sr1 = new SearchyRequest("Id", SearchyRule.EqualsTo, "s");

            //var sr2 = new SearchyRequest("ID", SearchyRule.EqualsTo, "s");

            //var sr2 =  Newtonsoft.Json.JsonConvert.SerializeObject(sr1);
            //var sr3 = System.Text.Json.JsonSerializer.Serialize(sr1);

            //var result = sr1 == sr2;
            //Assert.IsTrue(result);
            var filters   = new List <SearchyFilter>();
            var condition = new SearchyCondition(filters);
        }
        public void TestSearchyRequestEquality()
        {
            object x = 7.1;
            object y = 7.1;

            object zz      = null;
            string zzd     = (string)zz;
            var    result1 = x.Equals(y);
            var    sr1     = new SearchyRequest("Id", SearchyRule.EqualsTo, "s");
            var    sr2     = new SearchyRequest("ID", SearchyRule.EqualsTo, "s");
            var    result  = sr1 == sr2;

            Assert.IsTrue(result);
        }
예제 #10
0
        public void TestFilterSerialization()
        {
            var filter = new SearchyFilter()
            {
                Field = "CreatedOn",
                Rule  = SearchyRule.EqualsTo,
                ValueDateTimeArray = new DateTime[] { DateTime.Now, DateTime.UtcNow }
            };

            var searchRequest = new SearchyRequest(filter.ToString());

            //var filterDeserialized = new SearchyFilter(Uri.UnescapeDataString(filter.ToString()));

            var filter2 = new SearchyFilter
            {
                Field = "CreatedOn",
                Rule  = SearchyRule.EqualsTo,
                ValueDateTimeArray = new DateTime[] { DateTime.Now }
            };

            var filter2Deserialized = new SearchyFilter(Uri.UnescapeDataString(filter2.ToString()));
        }
예제 #11
0
        public void TestMethod1()
        {
            var sr    = new SearchyRequest();
            var srStr = sr.ToString();

            var sr2 = new SearchyRequest(new SearchyCondition("Id", SearchyRule.GreaterThan, "kjkjhg...&"));

            sr2.Conditions.First().Filters.Add(new SearchyFilter("FirstName", SearchyRule.EqualsTo, null));
            sr2.Sorts.Add(new SearchySort("Id", SearchySortOrder.ASC));
            sr2.Sorts.Add(new SearchySort("Name:2"));
            var srStr2 = sr2.ToString();



            var sr3 = new SearchyRequest();

            sr3.PageSize = 0;
            var srStr3 = sr3.ToString();


            var sr4 = new SearchyRequest();

            sr4.Sorts.Add(new SearchySort("Date", SearchySortOrder.DEC));
            sr4.CountRows = true;
            var srStr4 = sr4.ToString();

            var srnew = new SearchyRequest("filter=Id:1:testvalue");


            var sres = new SearchyResponse <string>();

            sres.Result = new List <string>
            {
                "val1",
                "val2"
            };

            ISearchyResponse <object> sresDown = sres;
        }
예제 #12
0
파일: Search.cs 프로젝트: simplify9/Gds
        async public Task <object> Handle(SearchyRequest searchyRequest, bool lookup = false, string searchPhrase = null)
        {
            var qry = dbContext.
                      Set <Country>().
                      AsNoTracking().
                      Where(c => string.IsNullOrWhiteSpace(searchyRequest.SearchPhrase) || EF.Functions.ILike(c.Name, $"%{searchyRequest.SearchPhrase}%"));

            if (searchyRequest.Format == 0)
            {
                return(await qry.
                       Select(i => new CountrySearch
                {
                    Code = i.Id,
                    Capital = i.Capital,
                    CurrencyCode = i.CurrencyCode,
                    CurrencyName = i.CurrencyName,
                    IsoCode3 = i.IsoCode3,
                    IsoNumber = i.IsoNumber,
                    Languages = i.Languages,
                    Name = i.Name,
                    Phone = i.Phone,
                    PostCodeFormat = i.PostCodeFormat,
                    PostCodeRegex = i.PostCodeRegex,
                    Tld = i.Tld
                }).
                       ToSearchyResponseAsync(searchyRequest));
            }
            else if (searchyRequest.Format == 1)
            {
                return(await qry.
                       OrderBy(c => c.Name).
                       ToDictionaryAsync(searchyRequest, c => c.Id, c => c.Name));
            }

            return(null);
        }
예제 #13
0
        async Task <IActionResult> ExecuteHandler(HandlerInfo handlerInfo, string key, object body = null, bool lookup = false)
        {
            var handlerInstance = await serviceProvider.GetHandlerInstance(handlerInfo);

            if (handlerInfo.NormalizedInterfaceType == typeof(ISearchyHandler))
            {
                var searchyRequest = new SearchyRequest(Request.QueryString.Value);
                var result         = await handlerInstance.Invoke(searchyRequest, lookup, null);

                if (lookup)
                {
                    return(StatusCode(206, result));
                }
                return(Ok(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(IQueryHandler))
            {
                var result = await handlerInstance.Invoke();

                return(Ok(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(IQueryHandler <>))
            {
                var request = Request.Query.GetInstance(handlerInfo.ArgumentTypes[0]);
                var result  = await handlerInstance.Invoke(request);

                return(Ok(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(IQueryHandler <,>))
            {
                object keyParam;
                try
                {
                    keyParam = key.ConvertValueToType(handlerInfo.ArgumentTypes[0]);
                }
                catch (Exception ex)
                {
                    throw new BadInputFormatException(ex);
                }
                var request = Request.Query.GetInstance(handlerInfo.ArgumentTypes[1]);
                var result  = await handlerInstance.Invoke(keyParam, request);

                return(Ok(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(ICommandHandler))
            {
                var result = await handlerInstance.Invoke();

                return(HandleResult(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(ICommandHandler <>))
            {
                object typedParam;
                try
                {
                    typedParam = JsonConvert.DeserializeObject(body.ToString(), handlerInfo.ArgumentTypes[0]);
                }
                catch (Exception ex)
                {
                    throw new BadInputFormatException(ex);
                }
                if (!await ValidateInput(typedParam))
                {
                    return(BadRequest(ModelState));
                }
                var result = await handlerInstance.Invoke(typedParam);

                return(HandleResult(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(ICommandHandler <,>))
            {
                object typedParam;
                object keyParam;
                try
                {
                    keyParam   = key.ConvertValueToType(handlerInfo.ArgumentTypes[0]);
                    typedParam = JsonConvert.DeserializeObject(body.ToString(), handlerInfo.ArgumentTypes[1]);
                }
                catch (Exception ex)
                {
                    throw new BadInputFormatException(ex);
                }

                if (!await ValidateInput(typedParam))
                {
                    return(BadRequest(ModelState));
                }
                var result = await handlerInstance.Invoke(keyParam, typedParam);

                return(HandleResult(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(IGetHandler <>))
            {
                object keyParam;
                try
                {
                    keyParam = key.ConvertValueToType(handlerInfo.ArgumentTypes[0]);
                }
                catch (Exception ex)
                {
                    throw new BadInputFormatException(ex);
                }
                var result = await handlerInstance.Invoke(keyParam, lookup);

                if (result == null)
                {
                    return(NotFound());
                }
                if (lookup)
                {
                    return(StatusCode(206, result));
                }
                return(HandleResult(result));
            }
            else if (handlerInfo.NormalizedInterfaceType == typeof(IDeleteHandler <>))
            {
                object keyParam;
                try
                {
                    keyParam = key.ConvertValueToType(handlerInfo.ArgumentTypes[0]);
                }
                catch (Exception ex)
                {
                    throw new BadInputFormatException(ex);
                }
                var result = await handlerInstance.Invoke(keyParam);

                return(Accepted());
            }
            else
            {
                return(NotFound());
            }
        }
 async public static Task <SearchyResponse <TEntity> > ToSearchyResponseAsync <TEntity>(this IQueryable <TEntity> query, SearchyRequest searchyRequest)
 {
     return(new SearchyResponse <TEntity>
     {
         Result = await query.Search(searchyRequest.Conditions, searchyRequest.Sorts, searchyRequest.PageSize, searchyRequest.PageIndex).ToListAsync(),
         TotalCount = searchyRequest.CountRows ? await query.Search(searchyRequest.Conditions).CountAsync() : 0
     });
 }
 async public static Task <IDictionary <string, string> > ToDictionaryAsync <TEntity>(this IQueryable <TEntity> query, SearchyRequest searchyRequest, Func <TEntity, string> keySelector, Func <TEntity, string> valueSelector = null)
 {
     return(await query.
            Search(searchyRequest.Conditions).
            ToDictionaryAsync(keySelector, valueSelector ?? keySelector));
 }
예제 #16
0
        async public Task TestMethod1()
        {
            var req = new SearchyRequest()
            {
                Conditions = new List <SearchyCondition>()
                {
                    new SearchyCondition()
                    {
                        Filters = new List <SearchyFilter>()
                        {
                            new SearchyFilter()
                            {
                                Field       = "Number",
                                Rule        = SearchyRule.Contains,
                                ValueString = "65456456"
                            }
                        }
                    }
                },
                PageIndex = 0,
                PageSize  = 12,
                Sorts     = new List <SearchySort>()
                {
                    new SearchySort()
                    {
                        Field = "ID", Sort = SearchySortOrder.DEC
                    }
                }
            };


            var validReq = new SearchyRequest()
            {
                Conditions = new List <SearchyCondition>()
                {
                    new SearchyCondition()
                    {
                        Filters = new List <SearchyFilter>()
                        {
                            new SearchyFilter()
                            {
                                Field       = "Description",
                                Rule        = SearchyRule.Contains,
                                ValueString = "update"
                            }
                        }
                    }
                },
                PageIndex = 0,
                PageSize  = 12,
                Sorts     = new List <SearchySort>()
                {
                    new SearchySort()
                    {
                        Field = "Id", Sort = SearchySortOrder.ASC
                    }
                }
            };

            var invalidReq = new SearchyRequest()
            {
                Conditions = new List <SearchyCondition>()
                {
                    new SearchyCondition()
                    {
                        Filters = new List <SearchyFilter>()
                        {
                            new SearchyFilter()
                            {
                                Field       = "NOTAVALIDFIELD",
                                Rule        = SearchyRule.Contains,
                                ValueString = "65456456"
                            }
                        }
                    }
                },
                PageIndex = 0,
                PageSize  = 12,
                Sorts     = new List <SearchySort>()
                {
                    new SearchySort()
                    {
                        Field = "ID", Sort = SearchySortOrder.ASC
                    }
                }
            };

            var bag = new Bag
            {
                Number      = "1",
                Description = "test bag 1",
                Entity      = "XYZ",
                TS          = DateTime.UtcNow,
            };

            using (var connection = new SqliteConnection("Data Source=./Data/TestDb.db"))
            {
                await connection.OpenAsync();

                await connection.Delete <Bag>("Bags");

                await connection.Add(bag);

                bag.Number = "2";
                await connection.Add(bag);

                bag.Number = "3";
                await connection.Add(bag);

                var bags = await connection.All <Bag>();

                Assert.AreEqual(3, bags.Count());

                var bagsEither1Or2 = await connection.All <Bag>(new List <SearchyCondition>()
                {
                    new SearchyCondition(nameof(Bag.Number), SearchyRule.EqualsTo, "1"),
                    new SearchyCondition(nameof(Bag.Number), SearchyRule.EqualsTo, "2")
                });

                Assert.AreEqual(2, bagsEither1Or2.Count());

                Assert.IsTrue(bagsEither1Or2.Where(x => x.Number == "3").FirstOrDefault() == null);


                bag.Description = "some update";

                await connection.Update(bag);


                var validData = await connection.All <Bag>(validReq.Conditions, validReq.Sorts, validReq.PageSize, validReq.PageIndex);

                var exceptionCatched = false;
                try
                {
                    var data = await connection.All <Bag>(invalidReq.Conditions, invalidReq.Sorts, invalidReq.PageSize, invalidReq.PageIndex);
                }
                catch (DeeBeeColumnNameException)
                {
                    exceptionCatched = true;
                }

                Assert.IsTrue(exceptionCatched);
            }
        }
예제 #17
0
파일: Searchy.cs 프로젝트: simplify9/CqApi
 public async Task <object> Handle(SearchyRequest searchyRequest, bool lookup = false, string searchPhrase = null)
 {
     return(searchyRequest.ToString());
 }
예제 #18
0
        async public Task <object> Handle(SearchyRequest searchyRequest, bool lookup = false, string searchPhrase = null)
        {
            var user = requestContext.User;

            return(new SearchyResponse <CarDto>());
        }