Browse Source

Closes #233

pull/235/head
Sebastian Stehle 8 years ago
parent
commit
a05c8a4342
  1. 6
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs
  2. 8
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FilterBuilder.cs
  3. 11
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs
  4. 14
      src/Squidex.Infrastructure.MongoDb/MongoDb/MongoExtensions.cs

6
src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs

@ -49,6 +49,8 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
protected override async Task SetupCollectionAsync(IMongoCollection<MongoContentEntity> collection)
{
await collection.Indexes.TryDropOneAsync("si_1_st_1_dl_1_dt_text");
await archiveCollection.Indexes.CreateOneAsync(
Index
.Ascending(x => x.Id)
@ -56,10 +58,10 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
await collection.Indexes.CreateOneAsync(
Index
.Text(x => x.DataText)
.Ascending(x => x.SchemaId)
.Ascending(x => x.Status)
.Ascending(x => x.IsDeleted)
.Text(x => x.DataText));
.Ascending(x => x.IsDeleted));
await collection.Indexes.CreateOneAsync(
Index

8
src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FilterBuilder.cs

@ -17,7 +17,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors
{
private static readonly FilterDefinitionBuilder<MongoContentEntity> Filter = Builders<MongoContentEntity>.Filter;
public static FilterDefinition<MongoContentEntity> Build(ODataUriParser query, Schema schema)
public static (FilterDefinition<MongoContentEntity> Filter, bool Last) Build(ODataUriParser query, Schema schema)
{
SearchClause search;
try
@ -31,7 +31,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors
if (search != null)
{
return Filter.Text(SearchTermVisitor.Visit(search.Expression).ToString());
return (Filter.Text(SearchTermVisitor.Visit(search.Expression).ToString()), false);
}
FilterClause filter;
@ -46,10 +46,10 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors
if (filter != null)
{
return FilterVisitor.Visit(filter.Expression, schema);
return (FilterVisitor.Visit(filter.Expression, schema), true);
}
return null;
return (null, false);
}
}
}

11
src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs

@ -73,9 +73,16 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors
var filter = FilterBuilder.Build(query, schema);
if (filter != null)
if (filter.Filter != null)
{
filters.Add(filter);
if (filter.Last)
{
filters.Add(filter.Filter);
}
else
{
filters.Insert(0, filter.Filter);
}
}
if (filters.Count == 1)

14
src/Squidex.Infrastructure.MongoDb/MongoDb/MongoExtensions.cs

@ -12,6 +12,8 @@ using MongoDB.Bson;
using MongoDB.Driver;
using Squidex.Infrastructure.States;
#pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body
namespace Squidex.Infrastructure.MongoDb
{
public static class MongoExtensions
@ -37,6 +39,18 @@ namespace Squidex.Infrastructure.MongoDb
return true;
}
public static async Task TryDropOneAsync<T>(this IMongoIndexManager<T> indexes, string name)
{
try
{
await indexes.DropOneAsync(name);
}
catch
{
/* NOOP */
}
}
public static IFindFluent<TDocument, BsonDocument> Only<TDocument>(this IFindFluent<TDocument, TDocument> find,
Expression<Func<TDocument, object>> include)
{

Loading…
Cancel
Save