Browse Source

Remove cosmos support.

pull/397/head
Sebastian Stehle 6 years ago
parent
commit
7b43d77017
  1. 13
      src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs
  2. 5
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentCollection.cs
  3. 6
      src/Squidex.Domain.Apps.Entities.MongoDb/Contents/MongoContentRepository.cs
  4. 10
      src/Squidex.Domain.Apps.Entities.MongoDb/History/MongoHistoryEventRepository.cs
  5. 5
      src/Squidex.Domain.Apps.Entities.MongoDb/Rules/MongoRuleEventRepository.cs
  6. 5
      src/Squidex.Domain.Users.MongoDb/Infrastructure/MongoPersistedGrantStore.cs
  7. 20
      src/Squidex.Domain.Users.MongoDb/MongoRoleStore.cs
  8. 32
      src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs
  9. 14
      src/Squidex.Infrastructure.Azure/EventSourcing/CosmosDbEventStore.cs
  10. 5
      src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs
  11. 5
      src/Squidex.Infrastructure.MongoDb/Migrations/MongoMigrationStatus.cs
  12. 1
      src/Squidex.Infrastructure.MongoDb/MongoDb/MongoDbEngine.cs
  13. 5
      src/Squidex.Infrastructure.MongoDb/MongoDb/MongoDbOptions.cs
  14. 18
      src/Squidex.Infrastructure.MongoDb/MongoDb/MongoRepositoryBase.cs
  15. 5
      src/Squidex.Infrastructure.MongoDb/States/MongoSnapshotStore.cs
  16. 5
      src/Squidex.Infrastructure.MongoDb/UsageTracking/MongoUsageRepository.cs
  17. 4
      src/Squidex/Config/Domain/EventStoreServices.cs
  18. 2
      src/Squidex/Config/Domain/StoreServices.cs
  19. 2
      src/Squidex/Squidex.csproj
  20. 4
      src/Squidex/appsettings.json
  21. 3
      tests/Squidex.Infrastructure.Tests/EventSourcing/MongoEventStoreFixture.cs
  22. 12
      tools/Migrate_01/Migrations/MongoDb/ConvertOldSnapshotStores.cs
  23. 12
      tools/Migrate_01/Migrations/MongoDb/RenameSlugField.cs

13
src/Squidex.Domain.Apps.Entities.MongoDb/Assets/MongoAssetRepository.cs

@ -24,14 +24,9 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
{
public sealed partial class MongoAssetRepository : MongoRepositoryBase<MongoAssetEntity>, IAssetRepository
{
private readonly MongoDbOptions options;
public MongoAssetRepository(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database)
: base(database, options)
{
Guard.NotNull(options, nameof(options));
this.options = options.Value;
}
protected override string CollectionName()
@ -53,7 +48,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
.Descending(x => x.LastModified),
new CreateIndexOptions
{
Name = options.IsDocumentDb ? "FileName_Tags" : null
Name = Options.IsDocumentDb ? "FileName_Tags" : null
}),
new CreateIndexModel<MongoAssetEntity>(
Index
@ -62,7 +57,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
.Ascending(x => x.FileHash),
new CreateIndexOptions
{
Name = options.IsDocumentDb ? "FileHash" : null
Name = Options.IsDocumentDb ? "FileHash" : null
}),
new CreateIndexModel<MongoAssetEntity>(
Index
@ -71,7 +66,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Assets
.Ascending(x => x.Slug),
new CreateIndexOptions
{
Name = options.IsDocumentDb ? "Slug" : null
Name = Options.IsDocumentDb ? "Slug" : null
})
},
ct);

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

@ -10,6 +10,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using NodaTime;
@ -33,8 +34,8 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
private readonly IAppProvider appProvider;
private readonly IJsonSerializer serializer;
public MongoContentCollection(IMongoDatabase database, IJsonSerializer serializer, IAppProvider appProvider)
: base(database)
public MongoContentCollection(IMongoDatabase database, IOptions<MongoDbOptions> options, IJsonSerializer serializer, IAppProvider appProvider)
: base(database, options)
{
this.appProvider = appProvider;

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

@ -9,6 +9,7 @@ using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using NodaTime;
using Squidex.Domain.Apps.Core.Contents;
@ -22,6 +23,7 @@ using Squidex.Domain.Apps.Events.Contents;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Json;
using Squidex.Infrastructure.Log;
using Squidex.Infrastructure.MongoDb;
using Squidex.Infrastructure.Queries;
namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
@ -41,7 +43,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
StatusSerializer.Register();
}
public MongoContentRepository(IMongoDatabase database, IAppProvider appProvider, IJsonSerializer serializer, ITextIndexer indexer, TypeNameRegistry typeNameRegistry)
public MongoContentRepository(IMongoDatabase database, IOptions<MongoDbOptions> options, IAppProvider appProvider, IJsonSerializer serializer, ITextIndexer indexer, TypeNameRegistry typeNameRegistry)
{
Guard.NotNull(appProvider, nameof(appProvider));
Guard.NotNull(database, nameof(database));
@ -57,7 +59,7 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Contents
typeAssetDeleted = typeNameRegistry.GetName<AssetDeleted>();
typeContentDeleted = typeNameRegistry.GetName<ContentDeleted>();
contents = new MongoContentCollection(database, serializer, appProvider);
contents = new MongoContentCollection(database, options, serializer, appProvider);
}
public Task InitializeAsync(CancellationToken ct = default)

10
src/Squidex.Domain.Apps.Entities.MongoDb/History/MongoHistoryEventRepository.cs

@ -10,7 +10,6 @@ using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson.Serialization;
using MongoDB.Driver;
using Squidex.Domain.Apps.Entities.History;
using Squidex.Domain.Apps.Entities.History.Repositories;
@ -21,15 +20,8 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.History
public class MongoHistoryEventRepository : MongoRepositoryBase<HistoryEvent>, IHistoryEventRepository
{
public MongoHistoryEventRepository(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database)
: base(database, options)
{
if (options.Value.IsCosmosDb)
{
var classMap = BsonClassMap.RegisterClassMap<HistoryEvent>();
classMap.MapProperty(x => x.Created).SetElementName("_ts");
classMap.AutoMap();
}
}
protected override string CollectionName()

5
src/Squidex.Domain.Apps.Entities.MongoDb/Rules/MongoRuleEventRepository.cs

@ -9,6 +9,7 @@ using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using NodaTime;
using Squidex.Domain.Apps.Core.HandleRules;
@ -22,8 +23,8 @@ namespace Squidex.Domain.Apps.Entities.MongoDb.Rules
{
public sealed class MongoRuleEventRepository : MongoRepositoryBase<MongoRuleEventEntity>, IRuleEventRepository
{
public MongoRuleEventRepository(IMongoDatabase database)
: base(database)
public MongoRuleEventRepository(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database, options)
{
}

5
src/Squidex.Domain.Users.MongoDb/Infrastructure/MongoPersistedGrantStore.cs

@ -10,6 +10,7 @@ using System.Threading;
using System.Threading.Tasks;
using IdentityServer4.Models;
using IdentityServer4.Stores;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
@ -30,8 +31,8 @@ namespace Squidex.Domain.Users.MongoDb.Infrastructure
});
}
public MongoPersistedGrantStore(IMongoDatabase database)
: base(database)
public MongoPersistedGrantStore(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database, options)
{
}

20
src/Squidex.Domain.Users.MongoDb/MongoRoleStore.cs

@ -8,6 +8,7 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
@ -30,8 +31,8 @@ namespace Squidex.Domain.Users.MongoDb
});
}
public MongoRoleStore(IMongoDatabase database)
: base(database)
public MongoRoleStore(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database, options)
{
}
@ -40,10 +41,23 @@ namespace Squidex.Domain.Users.MongoDb
return "Identity_Roles";
}
protected override string ShardKey()
{
return "Shard";
}
protected override Task SetupCollectionAsync(IMongoCollection<IdentityRole> collection, CancellationToken ct = default)
{
return collection.Indexes.CreateOneAsync(
new CreateIndexModel<IdentityRole>(Index.Ascending(x => x.NormalizedName), new CreateIndexOptions { Unique = true }), cancellationToken: ct);
new CreateIndexModel<IdentityRole>(
Index
.Ascending("Shard")
.Ascending(x => x.NormalizedName),
new CreateIndexOptions
{
Unique = true
}),
cancellationToken: ct);
}
protected override MongoCollectionSettings CollectionSettings()

32
src/Squidex.Domain.Users.MongoDb/MongoUserStore.cs

@ -17,7 +17,6 @@ using MongoDB.Bson;
using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Serializers;
using MongoDB.Driver;
using Squidex.Infrastructure;
using Squidex.Infrastructure.MongoDb;
using Squidex.Infrastructure.Tasks;
@ -43,7 +42,6 @@ namespace Squidex.Domain.Users.MongoDb
private const string InternalLoginProvider = "[AspNetUserStore]";
private const string AuthenticatorKeyTokenName = "AuthenticatorKey";
private const string RecoveryCodeTokenName = "RecoveryCodes";
private readonly MongoDbOptions options;
static MongoUserStore()
{
@ -108,11 +106,8 @@ namespace Squidex.Domain.Users.MongoDb
}
public MongoUserStore(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database)
: base(database, options)
{
Guard.NotNull(options, nameof(options));
this.options = options.Value;
}
protected override string CollectionName()
@ -120,16 +115,35 @@ namespace Squidex.Domain.Users.MongoDb
return "Identity_Users";
}
protected override string ShardKey()
{
return "Shard";
}
protected override Task SetupCollectionAsync(IMongoCollection<MongoUser> collection, CancellationToken ct = default)
{
return collection.Indexes.CreateManyAsync(
new[]
{
options.IsDocumentDb ?
Options.IsDocumentDb ?
new CreateIndexModel<MongoUser>(Index.Ascending("Logins.LoginProvider")) :
new CreateIndexModel<MongoUser>(Index.Ascending("Logins.LoginProvider").Ascending("Logins.ProviderKey")),
new CreateIndexModel<MongoUser>(Index.Ascending(x => x.NormalizedUserName), new CreateIndexOptions { Unique = true }),
new CreateIndexModel<MongoUser>(Index.Ascending(x => x.NormalizedEmail), new CreateIndexOptions { Unique = true })
new CreateIndexModel<MongoUser>(
Index
.Ascending("Shard")
.Ascending(x => x.NormalizedUserName),
new CreateIndexOptions
{
Unique = true
}),
new CreateIndexModel<MongoUser>(
Index
.Ascending("Shard")
.Ascending(x => x.NormalizedEmail),
new CreateIndexOptions
{
Unique = true
})
}, ct);
}

14
src/Squidex.Infrastructure.Azure/EventSourcing/CosmosDbEventStore.cs

@ -78,12 +78,26 @@ namespace Squidex.Infrastructure.EventSourcing
await documentClient.CreateDocumentCollectionIfNotExistsAsync(databaseUri,
new DocumentCollection
{
PartitionKey = new PartitionKeyDefinition
{
Paths = new Collection<string>
{
"/PartitionId"
}
},
Id = Constants.LeaseCollection
});
await documentClient.CreateDocumentCollectionIfNotExistsAsync(databaseUri,
new DocumentCollection
{
PartitionKey = new PartitionKeyDefinition
{
Paths = new Collection<string>
{
"/eventStream"
}
},
IndexingPolicy = new IndexingPolicy
{
IncludedPaths = new Collection<IncludedPath>

5
src/Squidex.Infrastructure.MongoDb/EventSourcing/MongoEventStore.cs

@ -7,6 +7,7 @@
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using Squidex.Infrastructure.MongoDb;
@ -26,8 +27,8 @@ namespace Squidex.Infrastructure.EventSourcing
get { return Database.GetCollection<BsonDocument>(CollectionName()); }
}
public MongoEventStore(IMongoDatabase database, IEventNotifier notifier)
: base(database)
public MongoEventStore(IMongoDatabase database, IOptions<MongoDbOptions> options, IEventNotifier notifier)
: base(database, options)
{
Guard.NotNull(notifier, nameof(notifier));

5
src/Squidex.Infrastructure.MongoDb/Migrations/MongoMigrationStatus.cs

@ -6,6 +6,7 @@
// ==========================================================================
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using Squidex.Infrastructure.MongoDb;
@ -16,8 +17,8 @@ namespace Squidex.Infrastructure.Migrations
private const string DefaultId = "Default";
private static readonly FindOneAndUpdateOptions<MongoMigrationEntity> UpsertFind = new FindOneAndUpdateOptions<MongoMigrationEntity> { IsUpsert = true };
public MongoMigrationStatus(IMongoDatabase database)
: base(database)
public MongoMigrationStatus(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database, options)
{
}

1
src/Squidex.Infrastructure.MongoDb/MongoDb/MongoDbEngine.cs

@ -9,7 +9,6 @@ namespace Squidex.Infrastructure.MongoDb
{
public enum MongoDbEngine
{
CosmosDb,
DocumentDb,
MongoDb,
}

5
src/Squidex.Infrastructure.MongoDb/MongoDb/MongoDbOptions.cs

@ -11,11 +11,6 @@ namespace Squidex.Infrastructure.MongoDb
{
public MongoDbEngine Engine { get; set; } = MongoDbEngine.MongoDb;
public bool IsCosmosDb
{
get { return Engine == MongoDbEngine.CosmosDb; }
}
public bool IsDocumentDb
{
get { return Engine == MongoDbEngine.DocumentDb; }

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

@ -9,6 +9,8 @@ using System;
using System.Globalization;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using Squidex.Infrastructure.Tasks;
@ -29,6 +31,7 @@ namespace Squidex.Infrastructure.MongoDb
protected static readonly ProjectionDefinitionBuilder<TEntity> Projection = Builders<TEntity>.Projection;
private readonly IMongoDatabase mongoDatabase;
private readonly MongoDbOptions options;
private Lazy<IMongoCollection<TEntity>> mongoCollection;
protected IMongoCollection<TEntity> Collection
@ -41,6 +44,11 @@ namespace Squidex.Infrastructure.MongoDb
get { return mongoDatabase; }
}
protected MongoDbOptions Options
{
get { return options; }
}
static MongoRepositoryBase()
{
RefTokenSerializer.Register();
@ -48,12 +56,15 @@ namespace Squidex.Infrastructure.MongoDb
InstantSerializer.Register();
}
protected MongoRepositoryBase(IMongoDatabase database)
protected MongoRepositoryBase(IMongoDatabase database, IOptions<MongoDbOptions> options)
{
Guard.NotNull(database, nameof(database));
Guard.NotNull(options, nameof(options));
mongoDatabase = database;
mongoCollection = CreateCollection();
this.options = options.Value;
}
protected virtual MongoCollectionSettings CollectionSettings()
@ -61,6 +72,11 @@ namespace Squidex.Infrastructure.MongoDb
return new MongoCollectionSettings();
}
protected virtual string ShardKey()
{
return "_id";
}
protected virtual string CollectionName()
{
return string.Format(CultureInfo.InvariantCulture, CollectionFormat, typeof(TEntity).Name);

5
src/Squidex.Infrastructure.MongoDb/States/MongoSnapshotStore.cs

@ -9,6 +9,7 @@ using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json;
@ -19,8 +20,8 @@ namespace Squidex.Infrastructure.States
{
public class MongoSnapshotStore<T, TKey> : MongoRepositoryBase<MongoState<T, TKey>>, ISnapshotStore<T, TKey>
{
public MongoSnapshotStore(IMongoDatabase database, JsonSerializer jsonSerializer)
: base(database)
public MongoSnapshotStore(IMongoDatabase database, IOptions<MongoDbOptions> options, JsonSerializer jsonSerializer)
: base(database, options)
{
Guard.NotNull(jsonSerializer, nameof(jsonSerializer));

5
src/Squidex.Infrastructure.MongoDb/UsageTracking/MongoUsageRepository.cs

@ -10,6 +10,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using Squidex.Infrastructure.MongoDb;
@ -19,8 +20,8 @@ namespace Squidex.Infrastructure.UsageTracking
{
private static readonly BulkWriteOptions Unordered = new BulkWriteOptions { IsOrdered = false };
public MongoUsageRepository(IMongoDatabase database)
: base(database)
public MongoUsageRepository(IMongoDatabase database, IOptions<MongoDbOptions> options)
: base(database, options)
{
}

4
src/Squidex/Config/Domain/EventStoreServices.cs

@ -11,6 +11,7 @@ using EventStore.ClientAPI;
using Microsoft.Azure.Documents.Client;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using Newtonsoft.Json;
using Squidex.Infrastructure;
@ -18,6 +19,7 @@ using Squidex.Infrastructure.Diagnostics;
using Squidex.Infrastructure.EventSourcing;
using Squidex.Infrastructure.EventSourcing.Grains;
using Squidex.Infrastructure.Json;
using Squidex.Infrastructure.MongoDb;
using Squidex.Infrastructure.States;
namespace Squidex.Config.Domain
@ -38,7 +40,7 @@ namespace Squidex.Config.Domain
var mongoClient = Singletons<IMongoClient>.GetOrAdd(mongoConfiguration, s => new MongoClient(s));
var mongDatabase = mongoClient.GetDatabase(mongoDatabaseName);
return new MongoEventStore(mongDatabase, c.GetRequiredService<IEventNotifier>());
return new MongoEventStore(mongDatabase, c.GetRequiredService<IOptions<MongoDbOptions>>(), c.GetRequiredService<IEventNotifier>());
})
.As<IEventStore>();
},

2
src/Squidex/Config/Domain/StoreServices.cs

@ -11,6 +11,7 @@ using IdentityServer4.Stores;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Migrate_01.Migrations.MongoDb;
using MongoDB.Driver;
using Squidex.Domain.Apps.Entities;
@ -104,6 +105,7 @@ namespace Squidex.Config.Domain
services.AddSingletonAs(c => new MongoContentRepository(
c.GetRequiredService<IMongoClient>().GetDatabase(mongoContentDatabaseName),
c.GetRequiredService<IOptions<MongoDbOptions>>(),
c.GetRequiredService<IAppProvider>(),
c.GetRequiredService<IJsonSerializer>(),
c.GetRequiredService<ITextIndexer>(),

2
src/Squidex/Squidex.csproj

@ -72,7 +72,7 @@
<PackageReference Include="NJsonSchema" Version="10.0.21" />
<PackageReference Include="NSwag.AspNetCore" Version="13.0.4" />
<PackageReference Include="OpenCover" Version="4.7.922" PrivateAssets="all" />
<PackageReference Include="Orleans.Providers.MongoDB" Version="2.4.0" />
<PackageReference Include="Orleans.Providers.MongoDB" Version="2.5.0" />
<PackageReference Include="Orleans.WebHostCompatibilityLayer" Version="2.3.1" />
<PackageReference Include="OrleansDashboard" Version="2.3.6" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />

4
src/Squidex/appsettings.json

@ -296,7 +296,7 @@
*
* Supported: MongoDB, Development
*/
"clustering": "MongoDB",
"clustering": "Development",
/*
* The port is used to share messages between all cluster members. Must be accessible within your cluster or network.
*/
@ -397,7 +397,7 @@
*/
"database": "Squidex",
/*
* The MongoDb Engine. Supported: MongoDb, CosmosDb, DocumentDb
* The MongoDb Engine. Supported: MongoDb, DocumentDb
*/
"engine": "MongoDb"
}

3
tests/Squidex.Infrastructure.Tests/EventSourcing/MongoEventStoreFixture.cs

@ -7,6 +7,7 @@
using System;
using FakeItEasy;
using Microsoft.Extensions.Options;
using MongoDB.Driver;
using Newtonsoft.Json;
using Squidex.Infrastructure.MongoDb;
@ -28,7 +29,7 @@ namespace Squidex.Infrastructure.EventSourcing
BsonJsonConvention.Register(JsonSerializer.Create(JsonHelper.DefaultSettings()));
EventStore = new MongoEventStore(mongoDatabase, notifier);
EventStore = new MongoEventStore(mongoDatabase, Options.Create(new MongoDbOptions()), notifier);
EventStore.InitializeAsync().Wait();
}

12
tools/Migrate_01/Migrations/MongoDb/ConvertOldSnapshotStores.cs

@ -7,33 +7,23 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using Squidex.Infrastructure.Migrations;
using Squidex.Infrastructure.MongoDb;
using Squidex.Infrastructure.Tasks;
namespace Migrate_01.Migrations.MongoDb
{
public sealed class ConvertOldSnapshotStores : IMigration
{
private readonly IMongoDatabase database;
private readonly MongoDbOptions options;
public ConvertOldSnapshotStores(IMongoDatabase database, IOptions<MongoDbOptions> options)
public ConvertOldSnapshotStores(IMongoDatabase database)
{
this.database = database;
this.options = options.Value;
}
public Task UpdateAsync()
{
if (options.IsCosmosDb)
{
return TaskHelper.Done;
}
var collections = new[]
{
"States_Apps",

12
tools/Migrate_01/Migrations/MongoDb/RenameSlugField.cs

@ -6,33 +6,23 @@
// ==========================================================================
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using MongoDB.Bson;
using MongoDB.Driver;
using Squidex.Infrastructure.Migrations;
using Squidex.Infrastructure.MongoDb;
using Squidex.Infrastructure.Tasks;
namespace Migrate_01.Migrations.MongoDb
{
public sealed class RenameSlugField : IMigration
{
private readonly IMongoDatabase database;
private readonly MongoDbOptions options;
public RenameSlugField(IMongoDatabase database, IOptions<MongoDbOptions> options)
public RenameSlugField(IMongoDatabase database)
{
this.database = database;
this.options = options.Value;
}
public Task UpdateAsync()
{
if (options.IsCosmosDb)
{
return TaskHelper.Done;
}
var collection = database.GetCollection<BsonDocument>("States_Assets");
var update = Builders<BsonDocument>.Update.Rename("FileNameSlug", "Slug");

Loading…
Cancel
Save