Browse Source

Migration added.

pull/282/head
Sebastian 8 years ago
parent
commit
671d03b08c
  1. 5
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs
  2. 1
      src/Squidex.Domain.Apps.Entities/Contents/ContentVersionLoader.cs
  3. 2
      src/Squidex.Domain.Apps.Entities/DomainObjectState.cs
  4. 5
      src/Squidex/Config/Domain/EntitiesServices.cs
  5. 2
      tests/RunCoverage.ps1
  6. 42
      tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentQueryServiceTests.cs
  7. 1
      tools/Migrate_01/Migrate_01.csproj
  8. 4
      tools/Migrate_01/MigrationPath.cs
  9. 32
      tools/Migrate_01/Migrations/DeleteArchiveCollection.cs
  10. 2
      tools/Migrate_01/Migrations/RebuildAssets.cs
  11. 2
      tools/Migrate_01/Migrations/RebuildContents.cs

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

@ -152,5 +152,10 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
callback(c);
});
}
public Task DeleteArchiveAsync()
{
return Database.DropCollectionAsync("States_Contents_Archive");
}
}
}

1
src/Squidex.Domain.Apps.Entities/Contents/ContentVersionLoader.cs

@ -38,6 +38,7 @@ namespace Squidex.Domain.Apps.Entities.Contents
if (content.Version < version)
{
content = content.Apply(e);
content.Version++;
}
});

2
src/Squidex.Domain.Apps.Entities/DomainObjectState.cs

@ -40,7 +40,7 @@ namespace Squidex.Domain.Apps.Entities
public Instant LastModified { get; set; }
[JsonProperty]
public long Version { get; set; }
public long Version { get; set; } = EtagVersion.Empty;
public T Clone()
{

5
src/Squidex/Config/Domain/EntitiesServices.cs

@ -161,13 +161,16 @@ namespace Squidex.Config.Domain
services.AddTransientAs<MigrationPath>()
.As<IMigrationPath>();
services.AddTransientAs<AddPatterns>()
.As<IMigration>();
services.AddTransientAs<ConvertEventStore>()
.As<IMigration>();
services.AddTransientAs<ConvertEventStoreAppId>()
.As<IMigration>();
services.AddTransientAs<AddPatterns>()
services.AddTransientAs<DeleteArchiveCollection>()
.As<IMigration>();
services.AddTransientAs<RebuildContents>()

2
tests/RunCoverage.ps1

@ -76,6 +76,6 @@ if ($all -Or $web) {
-oldStyle
}
&"$folderHome\.nuget\packages\ReportGenerator\3.1.1\tools\ReportGenerator.exe" `
&"$folderHome\.nuget\packages\ReportGenerator\3.1.2\tools\ReportGenerator.exe" `
-reports:"$folderWorking\$folderReports\*.xml" `
-targetdir:"$folderWorking\$folderReports\Output"

42
tests/Squidex.Domain.Apps.Entities.Tests/Contents/ContentQueryServiceTests.cs

@ -147,25 +147,37 @@ namespace Squidex.Domain.Apps.Entities.Contents
}
[Fact]
public async Task Should_return_contents_with_ids_from_repository_and_transform()
public async Task Should_return_contents_with_ids_from_repository()
{
await TestManyIdRequest(true, false, new HashSet<Guid> { Guid.NewGuid() }, Status.Draft, Status.Published);
}
[Fact]
public async Task Should_return_non_archived_contents_from_repository_and_transform()
public async Task Should_return_contents_with_ids_from_repository_and_transform_as_non_frontend()
{
await TestManyIdRequest(false, false, new HashSet<Guid> { Guid.NewGuid() }, Status.Published);
}
[Fact]
public async Task Should_return_non_archived_contents_from_repository()
{
await TestManyRequest(true, false, Status.Draft, Status.Published);
}
[Fact]
public async Task Should_return_archived_contents_from_repository_and_transform()
public async Task Should_return_non_archived_contents_from_repository_and_transform_as_non_frontend()
{
await TestManyRequest(false, false, Status.Published);
}
[Fact]
public async Task Should_return_archived_contents_from_repository()
{
await TestManyRequest(true, true, Status.Archived);
}
[Fact]
public async Task Should_return_draft_contents_from_repository_and_transform()
public async Task Should_return_draft_contents_from_repository()
{
await TestManyRequest(false, false, Status.Published);
}
@ -189,6 +201,17 @@ namespace Squidex.Domain.Apps.Entities.Contents
Assert.Equal(content.Id, result[0].Id);
Assert.Equal(123, result.Total);
if (!isFrontend)
{
A.CallTo(() => scriptEngine.Transform(A<ScriptContext>.Ignored, A<string>.Ignored))
.MustHaveHappened(Repeated.Exactly.Times(result.Count));
}
else
{
A.CallTo(() => scriptEngine.Transform(A<ScriptContext>.Ignored, A<string>.Ignored))
.MustNotHaveHappened();
}
}
private async Task TestManyIdRequest(bool isFrontend, bool archive, HashSet<Guid> ids, params Status[] status)
@ -204,6 +227,17 @@ namespace Squidex.Domain.Apps.Entities.Contents
Assert.Equal(content.Id, result[0].Id);
Assert.Equal(123, result.Total);
if (!isFrontend)
{
A.CallTo(() => scriptEngine.Transform(A<ScriptContext>.Ignored, A<string>.Ignored))
.MustHaveHappened(Repeated.Exactly.Times(result.Count));
}
else
{
A.CallTo(() => scriptEngine.Transform(A<ScriptContext>.Ignored, A<string>.Ignored))
.MustNotHaveHappened();
}
}
private void SetupClaims(bool isFrontend)

1
tools/Migrate_01/Migrate_01.csproj

@ -4,6 +4,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Squidex.Domain.Apps.Core.Model\Squidex.Domain.Apps.Core.Model.csproj" />
<ProjectReference Include="..\..\src\Squidex.Domain.Apps.Entities.MongoDb\Squidex.Domain.Apps.Entities.MongoDb.csproj" />
<ProjectReference Include="..\..\src\Squidex.Domain.Apps.Entities\Squidex.Domain.Apps.Entities.csproj" />
<ProjectReference Include="..\..\src\Squidex.Domain.Apps.Events\Squidex.Domain.Apps.Events.csproj" />
<ProjectReference Include="..\..\src\Squidex.Infrastructure.MongoDb\Squidex.Infrastructure.MongoDb.csproj" />

4
tools/Migrate_01/MigrationPath.cs

@ -15,7 +15,7 @@ namespace Migrate_01
{
public sealed class MigrationPath : IMigrationPath
{
private const int CurrentVersion = 7;
private const int CurrentVersion = 8;
private readonly IServiceProvider serviceProvider;
public MigrationPath(IServiceProvider serviceProvider)
@ -56,6 +56,8 @@ namespace Migrate_01
migrations.Add(serviceProvider.GetRequiredService<AddPatterns>());
}
migrations.Add(serviceProvider.GetRequiredService<DeleteArchiveCollection>());
return (CurrentVersion, migrations);
}
}

32
tools/Migrate_01/Migrations/DeleteArchiveCollection.cs

@ -0,0 +1,32 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using System.Threading.Tasks;
using Squidex.Domain.Apps.Entities.Contents.Repositories;
using Squidex.Domain.Apps.Entities.MongoDb.Contents;
using Squidex.Infrastructure.Migrations;
namespace Migrate_01.Migrations
{
public sealed class DeleteArchiveCollection : IMigration
{
private readonly IContentRepository contentRepository;
public DeleteArchiveCollection(IContentRepository contentRepository)
{
this.contentRepository = contentRepository;
}
public async Task UpdateAsync()
{
if (contentRepository is MongoContentRepository mongoContentRepository)
{
await mongoContentRepository.DeleteArchiveAsync();
}
}
}
}

2
tools/Migrate_01/Migrations/RebuildAssets.cs

@ -10,7 +10,7 @@ using Squidex.Infrastructure.Migrations;
namespace Migrate_01
{
public class RebuildAssets : IMigration
public sealed class RebuildAssets : IMigration
{
private readonly Rebuilder rebuilder;

2
tools/Migrate_01/Migrations/RebuildContents.cs

@ -10,7 +10,7 @@ using Squidex.Infrastructure.Migrations;
namespace Migrate_01.Migrations
{
public class RebuildContents : IMigration
public sealed class RebuildContents : IMigration
{
private readonly Rebuilder rebuilder;

Loading…
Cancel
Save