public object Execute(Query.IContentQuery <Models.MediaContent> query) { var mediaQuery = (MediaContentQuery)query; QueryExpressionTranslator translator = new QueryExpressionTranslator(); var contentQueryable = translator.Translate(query.Expression, All(mediaQuery.MediaFolder)); //translator.Visite(query.Expression); switch (translator.CallType) { case CallType.Count: return(contentQueryable.Count()); case CallType.First: return(contentQueryable.First()); case CallType.Last: return(contentQueryable.Last()); case CallType.LastOrDefault: return(contentQueryable.LastOrDefault()); case CallType.FirstOrDefault: return(contentQueryable.FirstOrDefault()); case CallType.Unspecified: default: return(contentQueryable); } }
public override object Execute() { var contents = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(CategoriesQuery.InnerQuery); IQueryable <TextContent> categories = new TextContent[0].AsQueryable(); if (contents.Count() > 0) { categories = CategoriesQuery.CategoryFolder.GetSchema().GetContents().AsQueryable(); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); categories = translator.Translate(CategoriesQuery.Expression, categories); var categoryData = CategoriesQuery.Repository.GetCategoryData() .Where(it => it.CategoryFolder.EqualsOrNullEmpty(CategoriesQuery.CategoryFolder.FullName, StringComparison.CurrentCultureIgnoreCase)) .Where(it => contents.Any(c => it.ContentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))) .ToArray(); categories = categories.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.CategoryUUID, StringComparison.CurrentCultureIgnoreCase))); var result = Execute(categories, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take); return(result); }
private Expression <Func <MediaContent, bool> > VisitInner(IExpression expression) { var visitor = new QueryExpressionTranslator(); visitor.Visite(expression); return(visitor.LinqExpression); }
public override object Execute() { IEnumerable <TextContent> contents = new TextContent[0]; contents = TextContentQuery.Schema.GetContents(); if (TextContentQuery.Folder != null) { contents = contents.Where(it => it.FolderName.EqualsOrNullEmpty(TextContentQuery.Folder.FullName, StringComparison.CurrentCultureIgnoreCase)); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); var contentQueryable = translator.Translate(TextContentQuery.Expression, contents.AsQueryable()); foreach (var categoryQuery in translator.CategoryQueries) { var categories = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(categoryQuery); var categoryData = TextContentQuery.Repository.GetCategoryData() .Where(it => categories.Any(c => it.CategoryUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); contentQueryable = contentQueryable.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.ContentUUID, StringComparison.CurrentCultureIgnoreCase))); } return(Execute(contentQueryable, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take)); }
private Expression <Func <TextContent, bool> > VisitInner(IExpression expression) { var visitor = new QueryExpressionTranslator(); visitor.Visite(expression); //combine the order expressions. this.OrderExpressions.AddRange(visitor.OrderExpressions); this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries); return(visitor.LinqExpression); }
public override object Execute() { var parent = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(ChildrenQuery.ParentQuery); IQueryable <TextContent> contents = new TextContent[0].AsQueryable(); if (parent.Count() > 0) { contents = ChildrenQuery.ChildSchema.GetContents().AsQueryable(); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); contents = translator.Translate(ChildrenQuery.Expression, contents); contents = contents.Where(it => parent.Any(c => it.ParentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); return(Execute(contents, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take)); }
public override object Execute() { var contents = (IEnumerable<TextContent>)ContentQueryExecutor.Execute(CategoriesQuery.InnerQuery); IQueryable<TextContent> categories = new TextContent[0].AsQueryable(); if (contents.Count() > 0) { categories = CategoriesQuery.CategoryFolder.GetSchema().GetContents().AsQueryable(); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); categories = translator.Translate(CategoriesQuery.Expression, categories); var categoryData = CategoriesQuery.Repository.GetCategoryData() .Where(it => it.CategoryFolder.EqualsOrNullEmpty(CategoriesQuery.CategoryFolder.FullName, StringComparison.CurrentCultureIgnoreCase)) .Where(it => contents.Any(c => it.ContentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))) .ToArray(); categories = categories.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.CategoryUUID, StringComparison.CurrentCultureIgnoreCase))); var result = Execute(categories, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take); return result; }
public override object Execute() { var parent = (IEnumerable<TextContent>)ContentQueryExecutor.Execute(ChildrenQuery.ParentQuery); IQueryable<TextContent> contents = new TextContent[0].AsQueryable(); if (parent.Count() > 0) { contents = ChildrenQuery.ChildSchema.GetContents().AsQueryable(); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); contents = translator.Translate(ChildrenQuery.Expression, contents); contents = contents.Where(it => parent.Any(c => it.ParentUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); return Execute(contents, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take); }
public override object Execute() { IEnumerable<TextContent> contents = new TextContent[0]; contents = TextContentQuery.Schema.GetContents(); if (TextContentQuery.Folder != null) { contents = contents.Where(it => it.FolderName.EqualsOrNullEmpty(TextContentQuery.Folder.FullName, StringComparison.CurrentCultureIgnoreCase)); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); var contentQueryable = translator.Translate(TextContentQuery.Expression, contents.AsQueryable()); foreach (var categoryQuery in translator.CategoryQueries) { var categories = (IEnumerable<TextContent>)ContentQueryExecutor.Execute(categoryQuery); var categoryData = TextContentQuery.Repository.GetCategoryData() .Where(it => categories.Any(c => it.CategoryUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); contentQueryable = contentQueryable.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.ContentUUID, StringComparison.CurrentCultureIgnoreCase))); } return Execute(contentQueryable, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take); }
private Expression<Func<TextContent, bool>> VisitInner(IExpression expression) { var visitor = new QueryExpressionTranslator(); visitor.Visite(expression); //combine the order expressions. this.OrderExpressions.AddRange(visitor.OrderExpressions); this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries); return visitor.LinqExpression; }
private Expression<Func<MediaContent, bool>> VisitInner(IExpression expression) { var visitor = new QueryExpressionTranslator(); visitor.Visite(expression); return visitor.LinqExpression; }
public object Execute(Query.IContentQuery<Models.MediaContent> query) { var mediaQuery = (MediaContentQuery)query; QueryExpressionTranslator translator = new QueryExpressionTranslator(); var contentQueryable = translator.Translate(query.Expression, All(mediaQuery.MediaFolder)); //translator.Visite(query.Expression); switch (translator.CallType) { case CallType.Count: return contentQueryable.Count(); case CallType.First: return contentQueryable.First(); case CallType.Last: return contentQueryable.Last(); case CallType.LastOrDefault: return contentQueryable.LastOrDefault(); case CallType.FirstOrDefault: return contentQueryable.FirstOrDefault(); case CallType.Unspecified: default: return contentQueryable; } }