diff --git a/src/providers/Elsa.Persistence.MongoDb/Elsa.Persistence.MongoDb.csproj b/src/providers/Elsa.Persistence.MongoDb/Elsa.Persistence.MongoDb.csproj
deleted file mode 100644
index 89a3a4506..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Elsa.Persistence.MongoDb.csproj
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
- netstandard2.0
- latest
- 1.0.0
- Elsa Contributors
-
- Elsa is a set of workflow libraries and tools that enable super-fast workflowing capabilities in any .NET Core application.
- This package provides a MongoDB persistence provider.
-
- 2019
- https://github.com/elsa-workflows/elsa-core
- https://github.com/elsa-workflows/elsa-core
- GitHub
- elsa, workflows, mongodb
- icon.png
-
-
-
-
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/providers/Elsa.Persistence.MongoDb/Extensions/ServiceCollectionExtensions.cs b/src/providers/Elsa.Persistence.MongoDb/Extensions/ServiceCollectionExtensions.cs
deleted file mode 100644
index 60b32cf9b..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Extensions/ServiceCollectionExtensions.cs
+++ /dev/null
@@ -1,111 +0,0 @@
-using System;
-using Elsa;
-using Elsa.Models;
-using Elsa.Persistence.MongoDb.Serialization;
-using Elsa.Persistence.MongoDb.Services;
-using MongoDB.Bson;
-using MongoDb.Bson.NodaTime;
-using MongoDB.Bson.Serialization;
-using MongoDB.Bson.Serialization.Conventions;
-using MongoDB.Driver;
-
-// ReSharper disable once CheckNamespace
-namespace Microsoft.Extensions.DependencyInjection
-{
- public static class ServiceCollectionExtensions
- {
- public static ElsaOptions UseMongoDbWorkflowStores(
- this ElsaOptions options,
- string databaseName,
- string connectionString)
- {
- return options
- .AddMongoDbProvider(databaseName, connectionString)
- .UseMongoDbWorkflowDefinitionStore(databaseName, connectionString)
- .UseMongoDbWorkflowInstanceStore(databaseName, connectionString);
- }
-
- public static ElsaOptions UseMongoDbWorkflowInstanceStore(
- this ElsaOptions options,
- string databaseName,
- string connectionString)
- {
- options
- .AddMongoDbProvider(databaseName, connectionString)
- .UseWorkflowInstanceStore(sp => sp.GetRequiredService())
- .Services
- .AddMongoDbCollection("WorkflowInstances")
- .AddScoped();
-
- return options;
- }
-
- public static ElsaOptions UseMongoDbWorkflowDefinitionStore(
- this ElsaOptions options,
- string databaseName,
- string connectionString)
- {
- options
- .AddMongoDbProvider(databaseName, connectionString)
- .UseWorkflowDefinitionStore(sp => sp.GetRequiredService())
- .Services
- .AddMongoDbCollection("WorkflowDefinitions")
- .AddScoped();
-
- return options;
- }
-
- public static IServiceCollection AddMongoDbCollection(
- this IServiceCollection services,
- string collectionName)
- {
- return services.AddSingleton(sp => CreateCollection(sp, collectionName));
- }
-
- private static ElsaOptions AddMongoDbProvider(
- this ElsaOptions options,
- string databaseName,
- string connectionString
- )
- {
- if (options.Services.HasService())
- return options;
-
- options.Services
- .AddTransient()
- .AddTransient()
- .AddSingleton(sp =>
- {
- NodaTimeSerializers.Register();
- RegisterEnumAsStringConvention();
- BsonSerializer.RegisterSerializer(sp.GetRequiredService());
- BsonSerializer.RegisterSerializer(sp.GetRequiredService());
- return CreateDbClient(connectionString);
- })
- .AddSingleton(sp => CreateDatabase(sp, databaseName));
-
- return options;
- }
-
- private static IMongoCollection CreateCollection(IServiceProvider serviceProvider, string collectionName)
- {
- var database = serviceProvider.GetRequiredService();
- return database.GetCollection(collectionName);
- }
-
- private static IMongoDatabase CreateDatabase(IServiceProvider serviceProvider, string databaseName)
- {
- var client = serviceProvider.GetRequiredService();
- return client.GetDatabase(databaseName);
- }
-
- private static IMongoClient CreateDbClient(string connectionString) => new MongoClient(connectionString);
-
- private static void RegisterEnumAsStringConvention()
- {
- var pack = new ConventionPack { new EnumRepresentationConvention(BsonType.String) };
-
- ConventionRegistry.Register("EnumStringConvention", pack, _ => true);
- }
- }
-}
\ No newline at end of file
diff --git a/src/providers/Elsa.Persistence.MongoDb/Serialization/JObjectSerializer.cs b/src/providers/Elsa.Persistence.MongoDb/Serialization/JObjectSerializer.cs
deleted file mode 100644
index 12debf91f..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Serialization/JObjectSerializer.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Elsa.Serialization;
-using Newtonsoft.Json.Linq;
-
-namespace Elsa.Persistence.MongoDb.Serialization
-{
- public class JObjectSerializer : JsonSerializerBase
- {
- public JObjectSerializer(ITokenSerializer serializer) : base(serializer)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/providers/Elsa.Persistence.MongoDb/Serialization/JsonSerializerBase.cs b/src/providers/Elsa.Persistence.MongoDb/Serialization/JsonSerializerBase.cs
deleted file mode 100644
index 0142287d8..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Serialization/JsonSerializerBase.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Elsa.Serialization;
-using MongoDB.Bson;
-using MongoDB.Bson.Serialization;
-using MongoDB.Bson.Serialization.Serializers;
-using Newtonsoft.Json;
-
-namespace Elsa.Persistence.MongoDb.Serialization
-{
- public abstract class JsonSerializerBase : SerializerBase
- {
- private readonly ITokenSerializer serializer;
-
- protected JsonSerializerBase(ITokenSerializer serializer)
- {
- this.serializer = serializer;
- }
-
- public override T Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
- {
- var document = BsonDocumentSerializer.Instance.Deserialize(context);
- var value = serializer.Deserialize(document.ToString());
-
- return value;
- }
-
- public override void Serialize(BsonSerializationContext context, BsonSerializationArgs args, T value)
- {
- var json = value != null ? serializer.Serialize(value) : null;
- var document = json != null ? BsonDocument.Parse(json.ToString(Formatting.None)) : new BsonDocument();
- BsonDocumentSerializer.Instance.Serialize(context, document);
- }
- }
-}
\ No newline at end of file
diff --git a/src/providers/Elsa.Persistence.MongoDb/Serialization/VariableSerializer.cs b/src/providers/Elsa.Persistence.MongoDb/Serialization/VariableSerializer.cs
deleted file mode 100644
index 54144cca1..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Serialization/VariableSerializer.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Elsa.Models;
-using Elsa.Serialization;
-
-namespace Elsa.Persistence.MongoDb.Serialization
-{
- public class VariableSerializer : JsonSerializerBase
- {
- public VariableSerializer(ITokenSerializer serializer) : base(serializer)
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/providers/Elsa.Persistence.MongoDb/Services/MongoWorkflowDefinitionStore.cs b/src/providers/Elsa.Persistence.MongoDb/Services/MongoWorkflowDefinitionStore.cs
deleted file mode 100644
index 575a87050..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Services/MongoWorkflowDefinitionStore.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using Elsa.Extensions;
-using Elsa.Models;
-using MongoDB.Driver;
-using MongoDB.Driver.Linq;
-
-namespace Elsa.Persistence.MongoDb.Services
-{
- public class MongoWorkflowDefinitionStore : IWorkflowDefinitionStore
- {
- private readonly IMongoCollection workflowDefinitionCollection;
- private readonly IMongoCollection workflowInstanceCollection;
-
- public MongoWorkflowDefinitionStore(
- IMongoCollection workflowDefinitionCollection,
- IMongoCollection workflowInstanceCollection)
- {
- this.workflowDefinitionCollection = workflowDefinitionCollection;
- this.workflowInstanceCollection = workflowInstanceCollection;
- }
-
- public async Task SaveAsync(
- WorkflowDefinitionVersion definition,
- CancellationToken cancellationToken = default)
- {
- await workflowDefinitionCollection.ReplaceOneAsync(
- x => x.Id == definition.Id && x.Version == definition.Version,
- definition,
- new ReplaceOptions { IsUpsert = true },
- cancellationToken
- );
-
- return definition;
- }
-
- public async Task AddAsync(WorkflowDefinitionVersion definition, CancellationToken cancellationToken = default)
- {
- await workflowDefinitionCollection.InsertOneAsync(definition, new InsertOneOptions(), cancellationToken);
- return definition;
- }
-
- public Task GetByIdAsync(string id, CancellationToken cancellationToken = default)
- {
- return workflowDefinitionCollection.AsQueryable().FirstOrDefaultAsync(x => x.Id == id, cancellationToken);
- }
-
- public async Task GetByIdAsync(
- string definitionId,
- VersionOptions version,
- CancellationToken cancellationToken = default)
- {
- var query = (IMongoQueryable)workflowDefinitionCollection.AsQueryable()
- .Where(x => x.DefinitionId == definitionId)
- .WithVersion(version);
-
- return await query.FirstOrDefaultAsync(cancellationToken);
- }
-
- public async Task> ListAsync(
- VersionOptions version,
- CancellationToken cancellationToken = default)
- {
- var query = workflowDefinitionCollection.AsQueryable();
- var results = await query.ToListAsync(cancellationToken);
- return results.WithVersion(version);
- }
-
- public async Task UpdateAsync(WorkflowDefinitionVersion definition,
- CancellationToken cancellationToken)
- {
- await workflowDefinitionCollection.ReplaceOneAsync(
- x => x.Id == definition.Id && x.Version == definition.Version,
- definition,
- new ReplaceOptions { IsUpsert = false },
- cancellationToken
- );
-
- return definition;
- }
-
- public async Task DeleteAsync(string id, CancellationToken cancellationToken = default)
- {
- await workflowInstanceCollection.DeleteManyAsync(x => x.DefinitionId == id, cancellationToken);
- var result = await workflowDefinitionCollection.DeleteManyAsync(x => x.DefinitionId == id, cancellationToken);
-
- return (int) result.DeletedCount;
- }
- }
-}
\ No newline at end of file
diff --git a/src/providers/Elsa.Persistence.MongoDb/Services/MongoWorkflowInstanceStore.cs b/src/providers/Elsa.Persistence.MongoDb/Services/MongoWorkflowInstanceStore.cs
deleted file mode 100644
index 4435ef74b..000000000
--- a/src/providers/Elsa.Persistence.MongoDb/Services/MongoWorkflowInstanceStore.cs
+++ /dev/null
@@ -1,136 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using Elsa.Extensions;
-using Elsa.Models;
-using MongoDB.Driver;
-using MongoDB.Driver.Linq;
-
-namespace Elsa.Persistence.MongoDb.Services
-{
- public class MongoWorkflowInstanceStore : IWorkflowInstanceStore
- {
- private readonly IMongoCollection collection;
-
- public MongoWorkflowInstanceStore(IMongoCollection collection)
- {
- this.collection = collection;
- }
-
- public async Task SaveAsync(WorkflowInstance instance, CancellationToken cancellationToken)
- {
- await collection.ReplaceOneAsync(
- x => x.Id == instance.Id,
- instance,
- new ReplaceOptions { IsUpsert = true },
- cancellationToken);
-
- return instance;
- }
-
- public async Task GetByIdAsync(
- string id,
- CancellationToken cancellationToken)
- {
- return await collection.AsQueryable().Where(x => x.Id == id).FirstOrDefaultAsync(cancellationToken);
- }
-
- public async Task GetByCorrelationIdAsync(
- string correlationId,
- CancellationToken cancellationToken = default)
- {
- return await collection.AsQueryable()
- .Where(x => x.CorrelationId == correlationId)
- .FirstOrDefaultAsync(cancellationToken);
- }
-
- public async Task> ListByDefinitionAsync(
- string definitionId,
- CancellationToken cancellationToken)
- {
- return await collection.AsQueryable()
- .Where(x => x.DefinitionId == definitionId)
- .OrderByDescending(x => x.CreatedAt)
- .ToListAsync(cancellationToken);
- }
-
- public async Task> ListAllAsync(CancellationToken cancellationToken)
- {
- return await collection
- .AsQueryable()
- .OrderByDescending(x => x.CreatedAt)
- .ToListAsync(cancellationToken);
- }
-
- public async Task> ListByBlockingActivityTagAsync(
- string activityType,
- string tag,
- string correlationId = null,
- CancellationToken cancellationToken = default)
- {
- var query = collection.AsQueryable();
-
- query = query.Where(x => x.Status == WorkflowStatus.Suspended);
-
- if (!string.IsNullOrWhiteSpace(correlationId))
- query = query.Where(x => x.CorrelationId == correlationId);
-
- query = query.Where(x => x.BlockingActivities.Any(y => y.ActivityType == activityType && y.Tag == tag));
- query = query.OrderByDescending(x => x.CreatedAt);
-
- var instances = await query.ToListAsync(cancellationToken);
-
- return instances.GetBlockingActivities(activityType);
- }
- public async Task> ListByBlockingActivityAsync(
- string activityType,
- string correlationId = default,
- CancellationToken cancellationToken = default)
- {
- var query = collection.AsQueryable();
-
- query = query.Where(x => x.Status == WorkflowStatus.Suspended);
-
- if (!string.IsNullOrWhiteSpace(correlationId))
- query = query.Where(x => x.CorrelationId == correlationId);
-
- query = query.Where(x => x.BlockingActivities.Any(y => y.ActivityType == activityType));
- query = query.OrderByDescending(x => x.CreatedAt);
-
- var instances = await query.ToListAsync(cancellationToken);
-
- return instances.GetBlockingActivities(activityType);
- }
-
- public async Task> ListByStatusAsync(
- string definitionId,
- WorkflowStatus status,
- CancellationToken cancellationToken)
- {
- return await collection
- .AsQueryable()
- .Where(x => x.DefinitionId == definitionId && x.Status == status)
- .OrderByDescending(x => x.CreatedAt)
- .ToListAsync(cancellationToken);
- }
-
- public async Task> ListByStatusAsync(
- WorkflowStatus status,
- CancellationToken cancellationToken)
- {
- return await collection
- .AsQueryable()
- .Where(x => x.Status == status)
- .OrderByDescending(x => x.CreatedAt)
- .ToListAsync(cancellationToken);
- }
-
- public async Task DeleteAsync(
- string id,
- CancellationToken cancellationToken = default)
- {
- await collection.DeleteOneAsync(x => x.Id == id, cancellationToken);
- }
- }
-}
\ No newline at end of file
diff --git a/src/providers/Elsa.Persistence.MongoDb/icon.png b/src/providers/Elsa.Persistence.MongoDb/icon.png
deleted file mode 100644
index f978a2882..000000000
Binary files a/src/providers/Elsa.Persistence.MongoDb/icon.png and /dev/null differ