Beispiel #1
0
        public async Task <SearchResults> SearchAsync(string query, Context context,
                                                      CancellationToken ct)
        {
            var result = new SearchResults();

            if (context.UserPermissions.Allows(Permissions.AppAssetsRead, context.App.Name))
            {
                var filter = ClrFilter.Contains("fileName", query);

                var clrQuery = new ClrQuery {
                    Filter = filter, Take = 5
                };

                var assets = await assetQuery.QueryAsync(context, null, Q.Empty.WithQuery(clrQuery), ct);

                if (assets.Count > 0)
                {
                    foreach (var asset in assets)
                    {
                        var url = urlGenerator.AssetsUI(context.App.NamedId(), asset.Id.ToString());

                        result.Add(asset.FileName, SearchResultType.Asset, url);
                    }
                }
            }

            return(result);
        }
Beispiel #2
0
        public override FilterNode <ClrValue> Visit(SingleValueFunctionCallNode nodeIn)
        {
            var fieldNode = nodeIn.Parameters.ElementAt(0);

            if (string.Equals(nodeIn.Name, "empty", StringComparison.OrdinalIgnoreCase))
            {
                return(ClrFilter.Empty(PropertyPathVisitor.Visit(fieldNode)));
            }

            var valueNode = nodeIn.Parameters.ElementAt(1);

            if (string.Equals(nodeIn.Name, "endswith", StringComparison.OrdinalIgnoreCase))
            {
                var value = ConstantWithTypeVisitor.Visit(valueNode);

                return(ClrFilter.EndsWith(PropertyPathVisitor.Visit(fieldNode), value));
            }

            if (string.Equals(nodeIn.Name, "startswith", StringComparison.OrdinalIgnoreCase))
            {
                var value = ConstantWithTypeVisitor.Visit(valueNode);

                return(ClrFilter.StartsWith(PropertyPathVisitor.Visit(fieldNode), value));
            }

            if (string.Equals(nodeIn.Name, "contains", StringComparison.OrdinalIgnoreCase))
            {
                var value = ConstantWithTypeVisitor.Visit(valueNode);

                return(ClrFilter.Contains(PropertyPathVisitor.Visit(fieldNode), value));
            }

            throw new NotSupportedException();
        }