mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Removing alterations to ContentQuery
--HG-- branch : 1.x
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
ec573e5476f7e8a5a61593d6393e9985e9484fcc src/Orchard.Web/Modules/Orchard.Forms
|
ec573e5476f7e8a5a61593d6393e9985e9484fcc src/Orchard.Web/Modules/Orchard.Forms
|
||||||
4e99d7e20caab07ddbdcf9c780525613bcf8a15b src/Orchard.Web/Modules/Orchard.Projections
|
09ddede21aceaf0f403aae2ed84f479818f7b3af src/Orchard.Web/Modules/Orchard.Projections
|
||||||
01b83c05050bb731d9f69256bbe8884d458ea1c9 src/Orchard.Web/Modules/Orchard.Rules
|
01b83c05050bb731d9f69256bbe8884d458ea1c9 src/Orchard.Web/Modules/Orchard.Rules
|
||||||
65057c6a5cd71f7994ba9bcbeece50dbb737620e src/Orchard.Web/Modules/Orchard.TaskLease
|
65057c6a5cd71f7994ba9bcbeece50dbb737620e src/Orchard.Web/Modules/Orchard.TaskLease
|
||||||
c2e3c396c1fc6c60b131bfc9f83564c6f8d18e58 src/Orchard.Web/Modules/Orchard.Tokens
|
c2e3c396c1fc6c60b131bfc9f83564c6f8d18e58 src/Orchard.Web/Modules/Orchard.Tokens
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
@@ -31,36 +30,37 @@ namespace Orchard.ContentManagement {
|
|||||||
return _session;
|
return _session;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal ICriteria BindCriteriaByPath(ICriteria criteria, string path, string alias = null) {
|
ICriteria BindCriteriaByPath(ICriteria criteria, string path) {
|
||||||
return criteria.GetCriteriaByPath(path) ?? (alias == null ? criteria.CreateCriteria(path) : criteria.CreateCriteria(path, alias));
|
return criteria.GetCriteriaByPath(path) ?? criteria.CreateCriteria(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal ICriteria BindTypeCriteria() {
|
ICriteria BindTypeCriteria() {
|
||||||
// ([ContentItemVersionRecord] >join> [ContentItemRecord]) >join> [ContentType]
|
// ([ContentItemVersionRecord] >join> [ContentItemRecord]) >join> [ContentType]
|
||||||
|
|
||||||
return BindCriteriaByPath(BindItemCriteria(), "ContentType");
|
return BindCriteriaByPath(BindItemCriteria(), "ContentType");
|
||||||
}
|
}
|
||||||
|
|
||||||
internal ICriteria BindItemCriteria() {
|
ICriteria BindItemCriteria() {
|
||||||
// [ContentItemVersionRecord] >join> [ContentItemRecord]
|
// [ContentItemVersionRecord] >join> [ContentItemRecord]
|
||||||
|
|
||||||
return BindCriteriaByPath(BindItemVersionCriteria(), "ContentItemRecord", "ci");
|
return BindCriteriaByPath(BindItemVersionCriteria(), "ContentItemRecord");
|
||||||
}
|
}
|
||||||
|
|
||||||
internal ICriteria BindItemVersionCriteria() {
|
ICriteria BindItemVersionCriteria() {
|
||||||
if (_itemVersionCriteria == null) {
|
if (_itemVersionCriteria == null) {
|
||||||
_itemVersionCriteria = BindSession().CreateCriteria<ContentItemVersionRecord>("civ");
|
_itemVersionCriteria = BindSession().CreateCriteria<ContentItemVersionRecord>();
|
||||||
}
|
}
|
||||||
return _itemVersionCriteria;
|
return _itemVersionCriteria;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal ICriteria BindPartCriteria<TRecord>() where TRecord : ContentPartRecord {
|
ICriteria BindPartCriteria<TRecord>() where TRecord : ContentPartRecord {
|
||||||
if (typeof(TRecord).IsSubclassOf(typeof(ContentPartVersionRecord))) {
|
if (typeof(TRecord).IsSubclassOf(typeof(ContentPartVersionRecord))) {
|
||||||
return BindCriteriaByPath(BindItemVersionCriteria(), typeof(TRecord).Name);
|
return BindCriteriaByPath(BindItemVersionCriteria(), typeof(TRecord).Name);
|
||||||
}
|
}
|
||||||
return BindCriteriaByPath(BindItemCriteria(), typeof(TRecord).Name);
|
return BindCriteriaByPath(BindItemCriteria(), typeof(TRecord).Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void ForType(params string[] contentTypeNames) {
|
private void ForType(params string[] contentTypeNames) {
|
||||||
if (contentTypeNames != null && contentTypeNames.Length != 0)
|
if (contentTypeNames != null && contentTypeNames.Length != 0)
|
||||||
BindTypeCriteria().Add(Restrictions.InG("Name", contentTypeNames));
|
BindTypeCriteria().Add(Restrictions.InG("Name", contentTypeNames));
|
||||||
@@ -75,44 +75,20 @@ namespace Orchard.ContentManagement {
|
|||||||
BindPartCriteria<TRecord>();
|
BindPartCriteria<TRecord>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Where<TRecord>(Expression<Func<TRecord, bool>> predicate, params Expression<Func<TRecord, bool>>[] orPredicates) where TRecord : ContentPartRecord {
|
private void Where<TRecord>(Expression<Func<TRecord, bool>> predicate) where TRecord : ContentPartRecord {
|
||||||
|
|
||||||
|
// build a linq to nhibernate expression
|
||||||
|
var options = new QueryOptions();
|
||||||
|
var queryProvider = new NHibernateQueryProvider(BindSession(), options);
|
||||||
|
var queryable = new Query<TRecord>(queryProvider, options).Where(predicate);
|
||||||
|
|
||||||
|
// translate it into the nhibernate ICriteria implementation
|
||||||
|
var criteria = (CriteriaImpl)queryProvider.TranslateExpression(queryable.Expression);
|
||||||
|
|
||||||
// attach the criterion from the predicate to this query's criteria for the record
|
// attach the criterion from the predicate to this query's criteria for the record
|
||||||
var recordCriteria = BindPartCriteria<TRecord>();
|
var recordCriteria = BindPartCriteria<TRecord>();
|
||||||
var predicates = Enumerable
|
foreach (var expressionEntry in criteria.IterateExpressionEntries()) {
|
||||||
.Empty<Expression<Func<TRecord, bool>>>()
|
recordCriteria.Add(expressionEntry.Criterion);
|
||||||
.Union(new []{predicate})
|
|
||||||
.Union(orPredicates);
|
|
||||||
|
|
||||||
var disjunction = Restrictions.Disjunction();
|
|
||||||
|
|
||||||
foreach (var p in predicates) {
|
|
||||||
// build a linq to nhibernate expression
|
|
||||||
var options = new QueryOptions();
|
|
||||||
var queryProvider = new NHibernateQueryProvider(BindSession(), options);
|
|
||||||
|
|
||||||
var queryable = new Query<TRecord>(queryProvider, options).Where(p);
|
|
||||||
var conjunction = Restrictions.Conjunction();
|
|
||||||
|
|
||||||
// translate it into the nhibernate ICriteria implementation
|
|
||||||
var criteria = (CriteriaImpl) queryProvider.TranslateExpression(queryable.Expression);
|
|
||||||
|
|
||||||
foreach (var expressionEntry in criteria.IterateExpressionEntries()) {
|
|
||||||
conjunction.Add(expressionEntry.Criterion);
|
|
||||||
}
|
|
||||||
|
|
||||||
disjunction.Add(conjunction);
|
|
||||||
}
|
|
||||||
|
|
||||||
recordCriteria.Add(disjunction);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Where(Action<IExpressionFactory> expression) {
|
|
||||||
var expressionFactory = new DefaultExpressionFactory(this);
|
|
||||||
|
|
||||||
expression(expressionFactory);
|
|
||||||
if (expressionFactory.Criterion != null) {
|
|
||||||
expressionFactory.Criteria.Add(expressionFactory.Criterion);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,15 +108,6 @@ namespace Orchard.ContentManagement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OrderBy(Action<ISortFactory> expression) {
|
|
||||||
var sortFactory = new DefaultSortFactory(this);
|
|
||||||
|
|
||||||
expression(sortFactory);
|
|
||||||
if (sortFactory.Order != null) {
|
|
||||||
sortFactory.Criteria.AddOrder(sortFactory.Order);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OrderByDescending<TRecord, TKey>(Expression<Func<TRecord, TKey>> keySelector) where TRecord : ContentPartRecord {
|
private void OrderByDescending<TRecord, TKey>(Expression<Func<TRecord, TKey>> keySelector) where TRecord : ContentPartRecord {
|
||||||
// build a linq to nhibernate expression
|
// build a linq to nhibernate expression
|
||||||
var options = new QueryOptions();
|
var options = new QueryOptions();
|
||||||
@@ -159,7 +126,7 @@ namespace Orchard.ContentManagement {
|
|||||||
|
|
||||||
private IEnumerable<ContentItem> Slice(int skip, int count) {
|
private IEnumerable<ContentItem> Slice(int skip, int count) {
|
||||||
var criteria = BindItemVersionCriteria();
|
var criteria = BindItemVersionCriteria();
|
||||||
|
|
||||||
criteria.ApplyVersionOptionsRestrictions(_versionOptions);
|
criteria.ApplyVersionOptionsRestrictions(_versionOptions);
|
||||||
|
|
||||||
// TODO: put 'removed false' filter in place
|
// TODO: put 'removed false' filter in place
|
||||||
@@ -230,13 +197,8 @@ namespace Orchard.ContentManagement {
|
|||||||
return new ContentQuery<T, TRecord>(_query);
|
return new ContentQuery<T, TRecord>(_query);
|
||||||
}
|
}
|
||||||
|
|
||||||
IContentQuery<T> IContentQuery<T>.Where(Action<IExpressionFactory> predicate) {
|
IContentQuery<T, TRecord> IContentQuery<T>.Where<TRecord>(Expression<Func<TRecord, bool>> predicate) {
|
||||||
_query.Where(predicate);
|
_query.Where(predicate);
|
||||||
return new ContentQuery<T>(_query);
|
|
||||||
}
|
|
||||||
|
|
||||||
IContentQuery<T, TRecord> IContentQuery<T>.Where<TRecord>(Expression<Func<TRecord, bool>> predicate, params Expression<Func<TRecord, bool>>[] orPredicates) {
|
|
||||||
_query.Where(predicate, orPredicates);
|
|
||||||
return new ContentQuery<T, TRecord>(_query);
|
return new ContentQuery<T, TRecord>(_query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,13 +211,9 @@ namespace Orchard.ContentManagement {
|
|||||||
_query.OrderByDescending(keySelector);
|
_query.OrderByDescending(keySelector);
|
||||||
return new ContentQuery<T, TRecord>(_query);
|
return new ContentQuery<T, TRecord>(_query);
|
||||||
}
|
}
|
||||||
|
|
||||||
IContentQuery<T> IContentQuery<T>.OrderBy(Action<ISortFactory> order) {
|
|
||||||
_query.OrderBy(order);
|
|
||||||
return new ContentQuery<T>(_query);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ContentQuery<T, TR> : ContentQuery<T>, IContentQuery<T, TR>
|
class ContentQuery<T, TR> : ContentQuery<T>, IContentQuery<T, TR>
|
||||||
where T : IContent
|
where T : IContent
|
||||||
where TR : ContentPartRecord {
|
where TR : ContentPartRecord {
|
||||||
@@ -268,8 +226,8 @@ namespace Orchard.ContentManagement {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
IContentQuery<T, TR> IContentQuery<T, TR>.Where(Expression<Func<TR, bool>> predicate, params Expression<Func<TR, bool>>[] orPredicates) {
|
IContentQuery<T, TR> IContentQuery<T, TR>.Where(Expression<Func<TR, bool>> predicate) {
|
||||||
_query.Where(predicate, orPredicates);
|
_query.Where(predicate);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,230 +242,6 @@ namespace Orchard.ContentManagement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DefaultExpressionFactory : IExpressionFactory {
|
|
||||||
private readonly DefaultContentQuery _query;
|
|
||||||
public ICriterion Criterion { get; private set; }
|
|
||||||
public ICriteria Criteria { get; private set; }
|
|
||||||
|
|
||||||
public DefaultExpressionFactory(DefaultContentQuery query) {
|
|
||||||
_query = query;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IExpressionFactory WithRecord(string path) {
|
|
||||||
Criteria = _query.BindCriteriaByPath(_query.BindItemCriteria(), path);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IExpressionFactory WithRelationship(string path) {
|
|
||||||
Criteria = _query.BindCriteriaByPath(Criteria, path);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IExpressionFactory WithVersionRecord(string path) {
|
|
||||||
Criteria = _query.BindCriteriaByPath(_query.BindItemVersionCriteria(), path);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IExpressionFactory WithIds(ICollection<int> ids) {
|
|
||||||
Criteria = _query.BindItemCriteria();
|
|
||||||
Criterion = Restrictions.InG("Id", ids);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Eq(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.Eq(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Like(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.Like(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Like(string propertyName, string value, MatchMode matchMode, char? escapeChar) {
|
|
||||||
Criterion = Restrictions.Like(propertyName, value, ToMatchMode(matchMode), escapeChar);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Like(string propertyName, string value, MatchMode matchMode) {
|
|
||||||
Criterion = Restrictions.Like(propertyName, value, ToMatchMode(matchMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InsensitiveLike(string propertyName, string value, MatchMode matchMode) {
|
|
||||||
Criterion = Restrictions.InsensitiveLike(propertyName, value, ToMatchMode(matchMode));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InsensitiveLike(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.InsensitiveLike(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Gt(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.Gt(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Lt(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.Lt(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Le(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.Le(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Ge(string propertyName, object value) {
|
|
||||||
Criterion = Restrictions.Ge(propertyName, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Between(string propertyName, object lo, object hi) {
|
|
||||||
Criterion = Restrictions.Between(propertyName, lo, hi);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void In(string propertyName, object[] values) {
|
|
||||||
Criterion = Restrictions.In(propertyName, values);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void In(string propertyName, ICollection values) {
|
|
||||||
Criterion = Restrictions.In(propertyName, values);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InG<T>(string propertyName, ICollection<T> values) {
|
|
||||||
Criterion = Restrictions.InG(propertyName, values);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void IsNull(string propertyName) {
|
|
||||||
Criterion = Restrictions.IsNull(propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void EqProperty(string propertyName, string otherPropertyName) {
|
|
||||||
Criterion = Restrictions.EqProperty(propertyName, otherPropertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void NotEqProperty(string propertyName, string otherPropertyName) {
|
|
||||||
Criterion = Restrictions.NotEqProperty(propertyName, otherPropertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void GtProperty(string propertyName, string otherPropertyName) {
|
|
||||||
Criterion = Restrictions.GtProperty(propertyName, otherPropertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void GeProperty(string propertyName, string otherPropertyName) {
|
|
||||||
Criterion = Restrictions.GeProperty(propertyName, otherPropertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LtProperty(string propertyName, string otherPropertyName) {
|
|
||||||
Criterion = Restrictions.LtProperty(propertyName, otherPropertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LeProperty(string propertyName, string otherPropertyName) {
|
|
||||||
Criterion = Restrictions.LeProperty(propertyName, otherPropertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void IsNotNull(string propertyName) {
|
|
||||||
Criterion = Restrictions.IsNotNull(propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void IsNotEmpty(string propertyName) {
|
|
||||||
Criterion = Restrictions.IsNotEmpty(propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void IsEmpty(string propertyName) {
|
|
||||||
Criterion = Restrictions.IsEmpty(propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void And(Action<IExpressionFactory> lhs, Action<IExpressionFactory> rhs) {
|
|
||||||
lhs(this);
|
|
||||||
var a = Criterion;
|
|
||||||
rhs(this);
|
|
||||||
var b = Criterion;
|
|
||||||
Criterion = Restrictions.And(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Or(Action<IExpressionFactory> lhs, Action<IExpressionFactory> rhs) {
|
|
||||||
lhs(this);
|
|
||||||
var a = Criterion;
|
|
||||||
rhs(this);
|
|
||||||
var b = Criterion;
|
|
||||||
Criterion = Restrictions.Or(a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Not(Action<IExpressionFactory> expression) {
|
|
||||||
expression(this);
|
|
||||||
var a = Criterion;
|
|
||||||
Criterion = Restrictions.Not(a);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Conjunction(Action<IExpressionFactory> expression, params Action<IExpressionFactory>[] otherExpressions) {
|
|
||||||
var junction = Restrictions.Conjunction();
|
|
||||||
foreach (var exp in Enumerable.Empty<Action<IExpressionFactory>>().Union(new[] { expression }).Union(otherExpressions)) {
|
|
||||||
exp(this);
|
|
||||||
junction.Add(Criterion);
|
|
||||||
}
|
|
||||||
|
|
||||||
Criterion = junction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Disjunction(Action<IExpressionFactory> expression, params Action<IExpressionFactory>[] otherExpressions) {
|
|
||||||
var junction = Restrictions.Disjunction();
|
|
||||||
foreach (var exp in Enumerable.Empty<Action<IExpressionFactory>>().Union(new[] { expression }).Union(otherExpressions)) {
|
|
||||||
exp(this);
|
|
||||||
junction.Add(Criterion);
|
|
||||||
}
|
|
||||||
|
|
||||||
Criterion = junction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AllEq(IDictionary propertyNameValues) {
|
|
||||||
Criterion = Restrictions.AllEq(propertyNameValues);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void NaturalId() {
|
|
||||||
Criterion = Restrictions.NaturalId();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static NHibernate.Criterion.MatchMode ToMatchMode(MatchMode matchMode) {
|
|
||||||
switch(matchMode) {
|
|
||||||
case MatchMode.Anywhere:
|
|
||||||
return NHibernate.Criterion.MatchMode.Anywhere;
|
|
||||||
case MatchMode.End:
|
|
||||||
return NHibernate.Criterion.MatchMode.End;
|
|
||||||
case MatchMode.Start:
|
|
||||||
return NHibernate.Criterion.MatchMode.Start;
|
|
||||||
case MatchMode.Exact:
|
|
||||||
return NHibernate.Criterion.MatchMode.Exact;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NHibernate.Criterion.MatchMode.Anywhere;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class DefaultSortFactory : ISortFactory {
|
|
||||||
private readonly DefaultContentQuery _query;
|
|
||||||
public Order Order { get; private set; }
|
|
||||||
public ICriteria Criteria { get; private set; }
|
|
||||||
|
|
||||||
public DefaultSortFactory(DefaultContentQuery query) {
|
|
||||||
_query = query;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISortFactory WithRecord(string path) {
|
|
||||||
Criteria = _query.BindCriteriaByPath(_query.BindItemCriteria(), path);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISortFactory WithVersionRecord(string path) {
|
|
||||||
Criteria = _query.BindCriteriaByPath(_query.BindItemVersionCriteria(), path);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISortFactory WithRelationship(string path) {
|
|
||||||
Criteria = _query.BindCriteriaByPath(Criteria, path);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Asc(string propertyName) {
|
|
||||||
Order = Order.Asc(propertyName);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Desc(string propertyName) {
|
|
||||||
Order = Order.Desc(propertyName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static class CriteriaExtensions {
|
internal static class CriteriaExtensions {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ using Orchard.ContentManagement.Records;
|
|||||||
|
|
||||||
namespace Orchard.ContentManagement {
|
namespace Orchard.ContentManagement {
|
||||||
|
|
||||||
public interface IContentQuery{
|
public interface IContentQuery {
|
||||||
IContentManager ContentManager { get; }
|
IContentManager ContentManager { get; }
|
||||||
IContentQuery<TPart> ForPart<TPart>() where TPart : IContent;
|
IContentQuery<TPart> ForPart<TPart>() where TPart : IContent;
|
||||||
}
|
}
|
||||||
@@ -20,10 +20,7 @@ namespace Orchard.ContentManagement {
|
|||||||
|
|
||||||
IContentQuery<TPart, TRecord> Join<TRecord>() where TRecord : ContentPartRecord;
|
IContentQuery<TPart, TRecord> Join<TRecord>() where TRecord : ContentPartRecord;
|
||||||
|
|
||||||
IContentQuery<TPart> Where(Action<IExpressionFactory> predicate);
|
IContentQuery<TPart, TRecord> Where<TRecord>(Expression<Func<TRecord, bool>> predicate) where TRecord : ContentPartRecord;
|
||||||
IContentQuery<TPart, TRecord> Where<TRecord>(Expression<Func<TRecord, bool>> predicate, params Expression<Func<TRecord, bool>>[] orPredicates) where TRecord : ContentPartRecord;
|
|
||||||
|
|
||||||
IContentQuery<TPart> OrderBy(Action<ISortFactory> order);
|
|
||||||
IContentQuery<TPart, TRecord> OrderBy<TRecord, TKey>(Expression<Func<TRecord, TKey>> keySelector) where TRecord : ContentPartRecord;
|
IContentQuery<TPart, TRecord> OrderBy<TRecord, TKey>(Expression<Func<TRecord, TKey>> keySelector) where TRecord : ContentPartRecord;
|
||||||
IContentQuery<TPart, TRecord> OrderByDescending<TRecord, TKey>(Expression<Func<TRecord, TKey>> keySelector) where TRecord : ContentPartRecord;
|
IContentQuery<TPart, TRecord> OrderByDescending<TRecord, TKey>(Expression<Func<TRecord, TKey>> keySelector) where TRecord : ContentPartRecord;
|
||||||
}
|
}
|
||||||
@@ -31,7 +28,7 @@ namespace Orchard.ContentManagement {
|
|||||||
public interface IContentQuery<TPart, TRecord> : IContentQuery<TPart> where TPart : IContent where TRecord : ContentPartRecord {
|
public interface IContentQuery<TPart, TRecord> : IContentQuery<TPart> where TPart : IContent where TRecord : ContentPartRecord {
|
||||||
new IContentQuery<TPart, TRecord> ForVersion(VersionOptions options);
|
new IContentQuery<TPart, TRecord> ForVersion(VersionOptions options);
|
||||||
|
|
||||||
IContentQuery<TPart, TRecord> Where(Expression<Func<TRecord, bool>> predicate, params Expression<Func<TRecord, bool>>[] orPredicates);
|
IContentQuery<TPart, TRecord> Where(Expression<Func<TRecord, bool>> predicate);
|
||||||
IContentQuery<TPart, TRecord> OrderBy<TKey>(Expression<Func<TRecord, TKey>> keySelector);
|
IContentQuery<TPart, TRecord> OrderBy<TKey>(Expression<Func<TRecord, TKey>> keySelector);
|
||||||
IContentQuery<TPart, TRecord> OrderByDescending<TKey>(Expression<Func<TRecord, TKey>> keySelector);
|
IContentQuery<TPart, TRecord> OrderByDescending<TKey>(Expression<Func<TRecord, TKey>> keySelector);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Orchard.ContentManagement {
|
|
||||||
public interface IExpressionFactory {
|
|
||||||
IExpressionFactory WithRecord(string recordName);
|
|
||||||
IExpressionFactory WithVersionRecord(string recordName);
|
|
||||||
IExpressionFactory WithRelationship(string propertyName);
|
|
||||||
IExpressionFactory WithIds(ICollection<int> ids);
|
|
||||||
|
|
||||||
void Eq(string propertyName, object value);
|
|
||||||
void Like(string propertyName, object value);
|
|
||||||
void Like(string propertyName, string value, MatchMode matchMode, char? escapeChar);
|
|
||||||
void Like(string propertyName, string value, MatchMode matchMode);
|
|
||||||
void InsensitiveLike(string propertyName, string value, MatchMode matchMode);
|
|
||||||
void InsensitiveLike(string propertyName, object value);
|
|
||||||
void Gt(string propertyName, object value);
|
|
||||||
void Lt(string propertyName, object value);
|
|
||||||
void Le(string propertyName, object value);
|
|
||||||
void Ge(string propertyName, object value);
|
|
||||||
void Between(string propertyName, object lo, object hi);
|
|
||||||
void In(string propertyName, object[] values);
|
|
||||||
void In(string propertyName, ICollection values);
|
|
||||||
void InG<T>(string propertyName, ICollection<T> values);
|
|
||||||
void IsNull(string propertyName);
|
|
||||||
void EqProperty(string propertyName, string otherPropertyName);
|
|
||||||
void NotEqProperty(string propertyName, string otherPropertyName);
|
|
||||||
void GtProperty(string propertyName, string otherPropertyName);
|
|
||||||
void GeProperty(string propertyName, string otherPropertyName);
|
|
||||||
void LtProperty(string propertyName, string otherPropertyName);
|
|
||||||
void LeProperty(string propertyName, string otherPropertyName);
|
|
||||||
void IsNotNull(string propertyName);
|
|
||||||
void IsNotEmpty(string propertyName);
|
|
||||||
void IsEmpty(string propertyName);
|
|
||||||
void And(Action<IExpressionFactory> lhs, Action<IExpressionFactory> rhs);
|
|
||||||
void Or(Action<IExpressionFactory> lhs, Action<IExpressionFactory> rhs);
|
|
||||||
void Not(Action<IExpressionFactory> expression);
|
|
||||||
void Conjunction(Action<IExpressionFactory> expression, params Action<IExpressionFactory>[] otherExpressions);
|
|
||||||
void Disjunction(Action<IExpressionFactory> expression, params Action<IExpressionFactory>[] otherExpressions);
|
|
||||||
void AllEq(IDictionary propertyNameValues);
|
|
||||||
void NaturalId();
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum MatchMode {
|
|
||||||
Exact,
|
|
||||||
Start,
|
|
||||||
End,
|
|
||||||
Anywhere
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
namespace Orchard.ContentManagement {
|
|
||||||
public interface ISortFactory {
|
|
||||||
ISortFactory WithRecord(string recordName);
|
|
||||||
ISortFactory WithVersionRecord(string recordName);
|
|
||||||
ISortFactory WithRelationship(string propertyName);
|
|
||||||
|
|
||||||
void Asc(string propertyName);
|
|
||||||
void Desc(string propertyName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -174,7 +174,6 @@
|
|||||||
<Compile Include="ContentManagement\IHqlQuery.cs" />
|
<Compile Include="ContentManagement\IHqlQuery.cs" />
|
||||||
<Compile Include="ContentManagement\Handlers\DescribeMembersContext.cs" />
|
<Compile Include="ContentManagement\Handlers\DescribeMembersContext.cs" />
|
||||||
<Compile Include="ContentManagement\IHqlCriterion.cs" />
|
<Compile Include="ContentManagement\IHqlCriterion.cs" />
|
||||||
<Compile Include="ContentManagement\ISortFactory.cs" />
|
|
||||||
<Compile Include="ContentManagement\DefaultContentDisplay.cs" />
|
<Compile Include="ContentManagement\DefaultContentDisplay.cs" />
|
||||||
<Compile Include="ContentManagement\Drivers\ContentShapeResult.cs" />
|
<Compile Include="ContentManagement\Drivers\ContentShapeResult.cs" />
|
||||||
<Compile Include="ContentManagement\FieldStorage\IFieldStorageEvents.cs" />
|
<Compile Include="ContentManagement\FieldStorage\IFieldStorageEvents.cs" />
|
||||||
@@ -184,7 +183,6 @@
|
|||||||
<Compile Include="ContentManagement\Handlers\ImportContentContext.cs" />
|
<Compile Include="ContentManagement\Handlers\ImportContentContext.cs" />
|
||||||
<Compile Include="ContentManagement\Handlers\TitleAspectHandler.cs" />
|
<Compile Include="ContentManagement\Handlers\TitleAspectHandler.cs" />
|
||||||
<Compile Include="ContentManagement\IContentBehavior.cs" />
|
<Compile Include="ContentManagement\IContentBehavior.cs" />
|
||||||
<Compile Include="ContentManagement\IExpressionFactory.cs" />
|
|
||||||
<Compile Include="ContentManagement\ImportContentSession.cs" />
|
<Compile Include="ContentManagement\ImportContentSession.cs" />
|
||||||
<Compile Include="ContentManagement\MetaData\Services\ISettingsFormatter.cs" />
|
<Compile Include="ContentManagement\MetaData\Services\ISettingsFormatter.cs" />
|
||||||
<Compile Include="ContentManagement\QueryHints.cs" />
|
<Compile Include="ContentManagement\QueryHints.cs" />
|
||||||
|
|||||||
Reference in New Issue
Block a user