Browse Source

Schema updated

pull/1/head
Sebastian 9 years ago
parent
commit
b27d82a41d
  1. 7
      src/Squidex.Core/Schemas/NamedElementProperties.cs
  2. 12
      src/Squidex.Store.MongoDb/Schemas/MongoSchemaEntity.cs
  3. 13
      src/Squidex.Store.MongoDb/Schemas/MongoSchemaRepository.cs
  4. 16
      src/Squidex.Store.MongoDb/Utils/EntityMapper.cs
  5. 4
      tests/Squidex.Core.Tests/Schemas/SchemaTests.cs

7
src/Squidex.Core/Schemas/NamedElementProperties.cs

@ -15,7 +15,7 @@ namespace Squidex.Core.Schemas
private string label; private string label;
private string hints; private string hints;
public bool IsFrozen { get; private set; } protected bool IsFrozen { get; private set; }
public string Label public string Label
{ {
@ -47,11 +47,6 @@ namespace Squidex.Core.Schemas
} }
} }
public bool ShouldSerializeIsFrozen()
{
return false;
}
public void Freeze() public void Freeze()
{ {
IsFrozen = true; IsFrozen = true;

12
src/Squidex.Store.MongoDb/Schemas/MongoSchemaEntity.cs

@ -32,23 +32,23 @@ namespace Squidex.Store.MongoDb.Schemas
[BsonRequired] [BsonRequired]
[BsonElement] [BsonElement]
public Guid AppId { get; set; } public string Schema { get; set; }
[BsonRequired] [BsonRequired]
[BsonElement] [BsonElement]
public bool IsDeleted { get; set; } public bool IsDeleted { get; set; }
[BsonRequired] [BsonRequired]
[BsonElement] [BsonElement]
public RefToken CreatedBy { get; set; } public Guid AppId { get; set; }
[BsonRequired] [BsonRequired]
[BsonElement] [BsonElement]
public RefToken LastModifiedBy { get; set; } public RefToken CreatedBy { get; set; }
[BsonRequired] [BsonRequired]
[BsonElement] [BsonElement]
public BsonDocument Schema { get; set; } public RefToken LastModifiedBy { get; set; }
[BsonRequired] [BsonRequired]
[BsonElement] [BsonElement]
@ -61,7 +61,7 @@ namespace Squidex.Store.MongoDb.Schemas
public Lazy<Schema> DeserializeSchema(SchemaJsonSerializer serializer) public Lazy<Schema> DeserializeSchema(SchemaJsonSerializer serializer)
{ {
schema = new Lazy<Schema>(() => Schema != null ? serializer.Deserialize(Schema.ToJToken()) : null); schema = new Lazy<Schema>(() => Schema != null ? serializer.Deserialize(Schema) : null);
return schema; return schema;
} }

13
src/Squidex.Store.MongoDb/Schemas/MongoSchemaRepository.cs

@ -155,7 +155,7 @@ namespace Squidex.Store.MongoDb.Schemas
{ {
var schema = Schema.Create(@event.Name, @event.Properties); var schema = Schema.Create(@event.Name, @event.Properties);
return Collection.CreateAsync(headers, s => { Serialize(s, schema); SimpleMapper.Map(@event, s); }); return Collection.CreateAsync(headers, s => { UpdateSchema(s, schema); SimpleMapper.Map(@event, s); });
} }
public Task On(Envelope<IEvent> @event) public Task On(Envelope<IEvent> @event)
@ -174,15 +174,20 @@ namespace Squidex.Store.MongoDb.Schemas
currentSchema = updater(currentSchema); currentSchema = updater(currentSchema);
Serialize(entity, currentSchema); UpdateSchema(entity, currentSchema);
UpdateProperties(entity, currentSchema);
}
private static void UpdateProperties(MongoSchemaEntity entity, Schema currentSchema)
{
entity.Label = currentSchema.Properties.Label; entity.Label = currentSchema.Properties.Label;
entity.IsPublished = currentSchema.IsPublished; entity.IsPublished = currentSchema.IsPublished;
} }
private void Serialize(MongoSchemaEntity entity, Schema schema) private void UpdateSchema(MongoSchemaEntity entity, Schema schema)
{ {
entity.Schema = serializer.Serialize(schema).ToBsonDocument(); entity.Schema = serializer.Serialize(schema).ToString();
} }
private Schema Deserialize(MongoSchemaEntity entity) private Schema Deserialize(MongoSchemaEntity entity)

16
src/Squidex.Store.MongoDb/Utils/EntityMapper.cs

@ -8,9 +8,7 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver; using MongoDB.Driver;
using Newtonsoft.Json.Linq;
using Squidex.Events; using Squidex.Events;
using Squidex.Infrastructure.CQRS; using Squidex.Infrastructure.CQRS;
using Squidex.Infrastructure.MongoDb; using Squidex.Infrastructure.MongoDb;
@ -94,20 +92,6 @@ namespace Squidex.Store.MongoDb.Utils
} }
} }
public static BsonDocument ToBsonDocument(this JToken value)
{
var json = value.ToString().Replace("$type", "§type");
return BsonDocument.Parse(json);
}
public static JToken ToJToken(this BsonDocument document)
{
var json = document.ToJson().Replace("§type", "$type");
return JToken.Parse(json);
}
public static Task CreateAsync<T>(this IMongoCollection<T> collection, EnvelopeHeaders headers, Action<T> updater, bool useAggregateId = true) where T : MongoEntity, new() public static Task CreateAsync<T>(this IMongoCollection<T> collection, EnvelopeHeaders headers, Action<T> updater, bool useAggregateId = true) where T : MongoEntity, new()
{ {
var entity = Create<T>(headers, useAggregateId); var entity = Create<T>(headers, useAggregateId);

4
tests/Squidex.Core.Tests/Schemas/SchemaTests.cs

@ -36,8 +36,6 @@ namespace Squidex.Core.Schemas
Assert.Equal("my-name", schema.Name); Assert.Equal("my-name", schema.Name);
Assert.Equal(properties, schema.Properties); Assert.Equal(properties, schema.Properties);
Assert.True(properties.IsFrozen);
} }
[Fact] [Fact]
@ -54,8 +52,6 @@ namespace Squidex.Core.Schemas
sut = sut.Update(properties); sut = sut.Update(properties);
Assert.Equal(properties, sut.Properties); Assert.Equal(properties, sut.Properties);
Assert.True(properties.IsFrozen);
} }
[Fact] [Fact]

Loading…
Cancel
Save