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

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

@ -32,23 +32,23 @@ namespace Squidex.Store.MongoDb.Schemas
[BsonRequired]
[BsonElement]
public Guid AppId { get; set; }
public string Schema { get; set; }
[BsonRequired]
[BsonElement]
public bool IsDeleted { get; set; }
[BsonRequired]
[BsonElement]
public RefToken CreatedBy { get; set; }
public Guid AppId { get; set; }
[BsonRequired]
[BsonElement]
public RefToken LastModifiedBy { get; set; }
public RefToken CreatedBy { get; set; }
[BsonRequired]
[BsonElement]
public BsonDocument Schema { get; set; }
public RefToken LastModifiedBy { get; set; }
[BsonRequired]
[BsonElement]
@ -61,7 +61,7 @@ namespace Squidex.Store.MongoDb.Schemas
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;
}

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);
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)
@ -174,15 +174,20 @@ namespace Squidex.Store.MongoDb.Schemas
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.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)

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

@ -8,9 +8,7 @@
using System;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json.Linq;
using Squidex.Events;
using Squidex.Infrastructure.CQRS;
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()
{
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(properties, schema.Properties);
Assert.True(properties.IsFrozen);
}
[Fact]
@ -54,8 +52,6 @@ namespace Squidex.Core.Schemas
sut = sut.Update(properties);
Assert.Equal(properties, sut.Properties);
Assert.True(properties.IsFrozen);
}
[Fact]

Loading…
Cancel
Save