From 6afced66ee630fdfe3dc8cbe99adb9456b9682f7 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 12 Feb 2017 20:34:27 +0100 Subject: [PATCH] Deletion handling improved --- .../Contents/MongoContentEntity.cs | 4 ---- .../Contents/MongoContentRepository_EventHandling.cs | 11 ++++------- .../Contents/Visitors/FindExtensions.cs | 5 +---- src/Squidex.Read.MongoDb/Schemas/MongoSchemaEntity.cs | 4 ---- .../Schemas/MongoSchemaRepository.cs | 10 +++++----- .../Schemas/MongoSchemaRepository_EventHandling.cs | 3 ++- .../pages/content/content-field.component.html | 2 +- src/Squidex/project.json | 1 - 8 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/Squidex.Read.MongoDb/Contents/MongoContentEntity.cs b/src/Squidex.Read.MongoDb/Contents/MongoContentEntity.cs index 14957c525..6d9d4dfcf 100644 --- a/src/Squidex.Read.MongoDb/Contents/MongoContentEntity.cs +++ b/src/Squidex.Read.MongoDb/Contents/MongoContentEntity.cs @@ -28,10 +28,6 @@ namespace Squidex.Read.MongoDb.Contents { private ContentData contentData; - [BsonRequired] - [BsonElement] - public bool IsDeleted { get; set; } - [BsonRequired] [BsonElement] public bool IsPublished { get; set; } diff --git a/src/Squidex.Read.MongoDb/Contents/MongoContentRepository_EventHandling.cs b/src/Squidex.Read.MongoDb/Contents/MongoContentRepository_EventHandling.cs index f8ef896d6..636c7c69e 100644 --- a/src/Squidex.Read.MongoDb/Contents/MongoContentRepository_EventHandling.cs +++ b/src/Squidex.Read.MongoDb/Contents/MongoContentRepository_EventHandling.cs @@ -111,22 +111,19 @@ namespace Squidex.Read.MongoDb.Contents }); } - protected Task On(ContentDeleted @event, EnvelopeHeaders headers) + protected Task On(FieldDeleted @event, EnvelopeHeaders headers) { return ForSchemaIdAsync(@event.SchemaId.Id, collection => { - return collection.UpdateAsync(@event, headers, x => - { - x.IsDeleted = true; - }); + return collection.UpdateManyAsync(new BsonDocument(), Update.Unset(new StringFieldDefinition($"Data.{@event.FieldId}"))); }); } - protected Task On(FieldDeleted @event, EnvelopeHeaders headers) + protected Task On(ContentDeleted @event, EnvelopeHeaders headers) { return ForSchemaIdAsync(@event.SchemaId.Id, collection => { - return collection.UpdateManyAsync(new BsonDocument(), Update.Unset(new StringFieldDefinition($"Data.{@event.FieldId}"))); + return collection.DeleteOneAsync(x => x.Id == headers.AggregateId()); }); } diff --git a/src/Squidex.Read.MongoDb/Contents/Visitors/FindExtensions.cs b/src/Squidex.Read.MongoDb/Contents/Visitors/FindExtensions.cs index 75e057012..8b69dc737 100644 --- a/src/Squidex.Read.MongoDb/Contents/Visitors/FindExtensions.cs +++ b/src/Squidex.Read.MongoDb/Contents/Visitors/FindExtensions.cs @@ -55,10 +55,7 @@ namespace Squidex.Read.MongoDb.Contents.Visitors public static FilterDefinition BuildQuery(ODataUriParser query, Schema schema, bool nonPublished) { - var filters = new List> - { - Filter.Eq(x => x.IsDeleted, false) - }; + var filters = new List>(); if (!nonPublished) { diff --git a/src/Squidex.Read.MongoDb/Schemas/MongoSchemaEntity.cs b/src/Squidex.Read.MongoDb/Schemas/MongoSchemaEntity.cs index 4ac33a0e0..cf64ff97b 100644 --- a/src/Squidex.Read.MongoDb/Schemas/MongoSchemaEntity.cs +++ b/src/Squidex.Read.MongoDb/Schemas/MongoSchemaEntity.cs @@ -33,10 +33,6 @@ namespace Squidex.Read.MongoDb.Schemas [BsonElement] public string Schema { get; set; } - [BsonRequired] - [BsonElement] - public bool IsDeleted { get; set; } - [BsonRequired] [BsonElement] public Guid AppId { get; set; } diff --git a/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository.cs b/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository.cs index cd1da50e4..12ca2b00f 100644 --- a/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository.cs +++ b/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository.cs @@ -54,14 +54,14 @@ namespace Squidex.Read.MongoDb.Schemas public async Task> QueryAllAsync(Guid appId) { - var entities = await Collection.Find(s => s.AppId == appId && !s.IsDeleted).ToListAsync(); + var entities = await Collection.Find(s => s.AppId == appId).ToListAsync(); return entities.OfType().ToList(); } public async Task> QueryAllWithSchemaAsync(Guid appId) { - var entities = await Collection.Find(s => s.AppId == appId && !s.IsDeleted).ToListAsync(); + var entities = await Collection.Find(s => s.AppId == appId).ToListAsync(); entities.ForEach(x => x.DeserializeSchema(serializer)); @@ -71,7 +71,7 @@ namespace Squidex.Read.MongoDb.Schemas public async Task FindSchemaAsync(Guid appId, string name) { var entity = - await Collection.Find(s => s.Name == name && s.AppId == appId && !s.IsDeleted) + await Collection.Find(s => s.Name == name && s.AppId == appId) .FirstOrDefaultAsync(); entity?.DeserializeSchema(serializer); @@ -82,7 +82,7 @@ namespace Squidex.Read.MongoDb.Schemas public async Task FindSchemaAsync(Guid schemaId) { var entity = - await Collection.Find(s => s.Id == schemaId && !s.IsDeleted) + await Collection.Find(s => s.Id == schemaId) .FirstOrDefaultAsync(); entity?.DeserializeSchema(serializer); @@ -93,7 +93,7 @@ namespace Squidex.Read.MongoDb.Schemas public async Task FindSchemaIdAsync(Guid appId, string name) { var entity = - await Collection.Find(s => s.Name == name & s.AppId == appId && !s.IsDeleted) + await Collection.Find(s => s.Name == name & s.AppId == appId) .Project(Projection.Include(x => x.Id)).FirstOrDefaultAsync(); return entity?.Id; diff --git a/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository_EventHandling.cs b/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository_EventHandling.cs index e78b8fa9d..c72f76f9c 100644 --- a/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository_EventHandling.cs +++ b/src/Squidex.Read.MongoDb/Schemas/MongoSchemaRepository_EventHandling.cs @@ -8,6 +8,7 @@ using System; using System.Threading.Tasks; +using MongoDB.Driver; using Squidex.Core.Schemas; using Squidex.Events; using Squidex.Events.Schemas; @@ -91,7 +92,7 @@ namespace Squidex.Read.MongoDb.Schemas protected async Task On(SchemaDeleted @event, EnvelopeHeaders headers) { - await Collection.UpdateAsync(@event, headers, s => s.IsDeleted = true); + await Collection.DeleteOneAsync(x => x.Id == headers.AggregateId()); SchemaSaved?.Invoke(@event.AppId, @event.SchemaId); } diff --git a/src/Squidex/app/features/content/pages/content/content-field.component.html b/src/Squidex/app/features/content/pages/content/content-field.component.html index e0b34fc93..4885797d5 100644 --- a/src/Squidex/app/features/content/pages/content/content-field.component.html +++ b/src/Squidex/app/features/content/pages/content/content-field.component.html @@ -3,7 +3,7 @@ {{field|displayName:'properties.label':'name'}} * - Disabled + Disabled
diff --git a/src/Squidex/project.json b/src/Squidex/project.json index 547bcba4a..7f3be446a 100644 --- a/src/Squidex/project.json +++ b/src/Squidex/project.json @@ -31,7 +31,6 @@ "Squidex.Core": "1.0.0-*", "Squidex.Events": "1.0.0-*", "Squidex.Infrastructure": "1.0.0-*", - "Squidex.Infrastructure.GoogleCloud": "1.0.0-*", "Squidex.Infrastructure.MongoDb": "1.0.0-*", "Squidex.Infrastructure.Redis": "1.0.0-*", "Squidex.Read": "1.0.0-*",