Browse Source

Correct deletion handling for content.

pull/221/head
Sebastian Stehle 8 years ago
parent
commit
f2f9e4700c
  1. 4
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentEntity.cs
  2. 10
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs
  3. 1
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository_SnapshotStore.cs
  4. 3
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/Visitors/FindExtensions.cs
  5. 6
      src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs

4
src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentEntity.cs

@ -78,6 +78,10 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
[BsonElement("vs")]
public long Version { get; set; }
[BsonRequired]
[BsonElement("dl")]
public bool IsDeleted { get; set; }
[BsonRequired]
[BsonElement("cb")]
public RefToken CreatedBy { get; set; }

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

@ -59,8 +59,14 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
Index
.Ascending(x => x.SchemaId)
.Ascending(x => x.Status)
.Ascending(x => x.IsDeleted)
.Text(x => x.DataText));
await collection.Indexes.CreateOneAsync(
Index
.Ascending(x => x.Id)
.Ascending(x => x.IsDeleted));
await collection.Indexes.CreateOneAsync(
Index
.Ascending(x => x.Id)
@ -138,7 +144,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public async Task<IContentEntity> FindContentAsync(IAppEntity app, ISchemaEntity schema, Guid id)
{
var contentEntity =
await Collection.Find(x => x.Id == id)
await Collection.Find(x => x.Id == id && !x.IsDeleted)
.FirstOrDefaultAsync();
contentEntity?.ParseData(schema.SchemaDef);
@ -148,7 +154,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
public override async Task ClearAsync()
{
await ArchiveCollection.DeleteManyAsync(new BsonDocument());
await Database.DropCollectionAsync("States_Contents_Archive");
await base.ClearAsync();
}

1
src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository_SnapshotStore.cs

@ -53,6 +53,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
var document = SimpleMapper.Map(value, new MongoContentEntity
{
IsDeleted = value.IsDeleted,
DocumentId = key.ToString(),
DataText = idData?.ToFullText(),
DataByIds = idData,

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

@ -67,7 +67,8 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents.Visitors
var filters = new List<FilterDefinition<MongoContentEntity>>
{
Filter.Eq(x => x.SchemaId, schemaId),
Filter.In(x => x.Status, status)
Filter.In(x => x.Status, status),
Filter.Eq(x => x.IsDeleted, false)
};
var filter = FilterBuilder.Build(query, schema);

6
src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs

@ -84,9 +84,11 @@ namespace Squidex.Infrastructure.MongoDb
return TaskHelper.Done;
}
public virtual Task ClearAsync()
public virtual async Task ClearAsync()
{
return Collection.DeleteManyAsync(new BsonDocument());
await Database.DropCollectionAsync(CollectionName());
await SetupCollectionAsync(Collection);
}
public async Task<bool> DropCollectionIfExistsAsync()

Loading…
Cancel
Save