Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mongodb implementation #4127

Merged
merged 31 commits into from
Jun 28, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
f29eff6
Implemented MongoDb
gurkanguran May 30, 2023
5e10320
Refactor
gurkanguran May 30, 2023
6c811b3
Refactor
gurkanguran May 30, 2023
252a2bb
Use main entity models in mongodb
gurkanguran Jun 1, 2023
2b69729
Fixed object serialization issue
gurkanguran Jun 9, 2023
839acc8
Refactor
gurkanguran Jun 9, 2023
6f15926
Fixed issues caused by duplicate collection names
gurkanguran Jun 9, 2023
0bd2002
Optimized count query
gurkanguran Jun 12, 2023
c2e0dec
Merge branch 'v3' into mongodb
gurkanguran Jun 12, 2023
5568af6
Fixed the issues after merge
gurkanguran Jun 12, 2023
0c69308
Merge branch 'v3' into mongodb
gurkanguran Jun 12, 2023
d1cffa2
Revert "Fixed the issues after merge"
gurkanguran Jun 12, 2023
1b30f42
Use expression helper to solve mongodb query issue
gurkanguran Jun 12, 2023
28b02b5
Merge branch 'v3' into mongodb
gurkanguran Jun 12, 2023
0018e71
Handle null values during deserialization
gurkanguran Jun 12, 2023
9fe1b9f
Moved MongoDb project to persistence folder
gurkanguran Jun 12, 2023
703be36
Merge branch 'v3' into mongodb
gurkanguran Jun 14, 2023
8b88d70
Refactor
gurkanguran Jun 14, 2023
461e887
Did some refactor and added type serializer for variable fix
gurkanguran Jun 15, 2023
0d57717
Modularize mongodb indices creation
gurkanguran Jun 17, 2023
1c67677
Refactor
gurkanguran Jun 17, 2023
14c56d3
Merge branch 'v3' into mongodb
gurkanguran Jun 17, 2023
ceda7e2
Fixed the build
gurkanguran Jun 17, 2023
0b8d919
Refactor
gurkanguran Jun 18, 2023
0949fda
Merge branch 'v3' into mongodb
gurkanguran Jun 18, 2023
6f25915
Merge branch 'v3' into mongodb
gurkanguran Jun 18, 2023
4258026
Merge branch 'v3' into mongodb
sfmskywalker Jun 28, 2023
7f22b71
Remove unused imports
sfmskywalker Jun 28, 2023
2a1b960
Import necessary usings
sfmskywalker Jun 28, 2023
501b8a3
Implement variable serializer
sfmskywalker Jun 28, 2023
94eabd5
Update SQLite migrations
sfmskywalker Jun 28, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixed the issues after merge
  • Loading branch information
gurkanguran committed Jun 12, 2023
commit 5568af60cfc107b8ee68fd4c89fbb02946f8a6a3
40 changes: 0 additions & 40 deletions src/modules/Elsa.MongoDB/Helpers/ExpressionHelpers.cs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using Elsa.Common.Models;
using Elsa.Extensions;
using Elsa.MongoDB.Common;
using Elsa.MongoDB.Helpers;
using Elsa.Workflows.Management.Contracts;
using Elsa.Workflows.Management.Entities;
using Elsa.Workflows.Management.Filters;
Expand Down Expand Up @@ -73,7 +72,7 @@ public async Task<Page<WorkflowDefinitionSummary>> FindSummariesAsync(WorkflowDe
var queryable = Filter(collection.AsQueryable(), filter);
var count = queryable.LongCount();
queryable = (queryable.Paginate(pageArgs) as IMongoQueryable<WorkflowDefinition>)!;
var documents = await queryable.Select(ExpressionHelpers.WorkflowDefinitionSummary).ToListAsync(cancellationToken);
var documents = await queryable.Select(x=> WorkflowDefinitionSummary.FromDefinition(x)).ToListAsync(cancellationToken);

return Page.Of(documents, count);
}
Expand All @@ -85,24 +84,24 @@ public async Task<Page<WorkflowDefinitionSummary>> FindSummariesAsync<TOrderBy>(
var queryable = Order(Filter(collection.AsQueryable(), filter), order);
var count = queryable.LongCount();
var mongoQueryable = (queryable.Paginate(pageArgs) as IMongoQueryable<WorkflowDefinition>)!;
var documents = await mongoQueryable.Select(ExpressionHelpers.WorkflowDefinitionSummary).ToListAsync(cancellationToken);
var documents = await mongoQueryable.Select(x=> WorkflowDefinitionSummary.FromDefinition(x)).ToListAsync(cancellationToken);

return Page.Of(documents, count);
}

/// <inheritdoc />
public async Task<IEnumerable<WorkflowDefinitionSummary>> FindSummariesAsync(WorkflowDefinitionFilter filter, CancellationToken cancellationToken = default) =>
await _mongoStore.FindManyAsync(query => Filter(query, filter), ExpressionHelpers.WorkflowDefinitionSummary, cancellationToken).ToList().AsEnumerable();
await _mongoStore.FindManyAsync(query => Filter(query, filter), x => WorkflowDefinitionSummary.FromDefinition(x), cancellationToken).ToList().AsEnumerable();

/// <inheritdoc />
public async Task<IEnumerable<WorkflowDefinitionSummary>> FindSummariesAsync<TOrderBy>(WorkflowDefinitionFilter filter, WorkflowDefinitionOrder<TOrderBy> order, CancellationToken cancellationToken = default) =>
await _mongoStore.FindManyAsync(query => Order(Filter(query, filter), order), ExpressionHelpers.WorkflowDefinitionSummary, cancellationToken).ToList().AsEnumerable();
await _mongoStore.FindManyAsync(query => Order(Filter(query, filter), order), x => WorkflowDefinitionSummary.FromDefinition(x), cancellationToken).ToList().AsEnumerable();

/// <inheritdoc />
public async Task<WorkflowDefinition?> FindLastVersionAsync(WorkflowDefinitionFilter filter, CancellationToken cancellationToken)
{
var order = new WorkflowDefinitionOrder<int>(x => x.Version, OrderDirection.Descending);
return (await _mongoStore.FindAsync(queryable => Order(Filter(queryable, filter), order), cancellationToken));
return await _mongoStore.FindAsync(queryable => Order(Filter(queryable, filter), order), cancellationToken);
}

/// <inheritdoc />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
using Elsa.Common.Models;
using Elsa.Extensions;
using Elsa.MongoDB.Common;
using Elsa.MongoDB.Extensions;
using Elsa.MongoDB.Helpers;
using Elsa.Workflows.Core.Contracts;
using Elsa.Workflows.Management.Contracts;
using Elsa.Workflows.Management.Entities;
using Elsa.Workflows.Management.Filters;
Expand Down Expand Up @@ -61,7 +58,7 @@ public async Task<Page<WorkflowInstance>> FindManyAsync<TOrderBy>(WorkflowInstan
public async Task<Page<WorkflowInstanceSummary>> SummarizeManyAsync(WorkflowInstanceFilter filter, PageArgs pageArgs, CancellationToken cancellationToken = default)
{
var count = await _mongoStore.CountAsync(query => Filter(query, filter), cancellationToken);
var documents = await _mongoStore.FindManyAsync<WorkflowInstanceSummary>(query => Paginate(Filter(query, filter), pageArgs), ExpressionHelpers.WorkflowInstanceSummary, cancellationToken).ToList();
var documents = await _mongoStore.FindManyAsync<WorkflowInstanceSummary>(query => Paginate(Filter(query, filter), pageArgs), x => WorkflowInstanceSummary.FromInstance(x), cancellationToken).ToList();
return Page.Of(documents, count);
}

Expand All @@ -72,18 +69,18 @@ public async Task<Page<WorkflowInstanceSummary>> SummarizeManyAsync<TOrderBy>(Wo
var queryable = Order(Filter(collection.AsQueryable(), filter), order);
var count = queryable.LongCount();
var mongoQueryable = (queryable.Paginate(pageArgs) as IMongoQueryable<WorkflowInstance>)!;
var documents = await mongoQueryable.Select(ExpressionHelpers.WorkflowInstanceSummary).ToListAsync(cancellationToken);
var documents = await mongoQueryable.Select(x => WorkflowInstanceSummary.FromInstance(x)).ToListAsync(cancellationToken);

return Page.Of(documents, count);
}

/// <inheritdoc />
public async Task<IEnumerable<WorkflowInstanceSummary>> SummarizeManyAsync(WorkflowInstanceFilter filter, CancellationToken cancellationToken = default) =>
await _mongoStore.FindManyAsync(query => Filter(query, filter), ExpressionHelpers.WorkflowInstanceSummary, cancellationToken).ToList().AsEnumerable();
await _mongoStore.FindManyAsync(query => Filter(query, filter), x => WorkflowInstanceSummary.FromInstance(x), cancellationToken).ToList().AsEnumerable();

/// <inheritdoc />
public async Task<IEnumerable<WorkflowInstanceSummary>> SummarizeManyAsync<TOrderBy>(WorkflowInstanceFilter filter, WorkflowInstanceOrder<TOrderBy> order, CancellationToken cancellationToken = default) =>
await _mongoStore.FindManyAsync(query => Order(Filter(query, filter), order), ExpressionHelpers.WorkflowInstanceSummary, cancellationToken).ToList().AsEnumerable();
await _mongoStore.FindManyAsync(query => Order(Filter(query, filter), order), x => WorkflowInstanceSummary.FromInstance(x), cancellationToken).ToList().AsEnumerable();

/// <inheritdoc />
public async Task<int> DeleteAsync(WorkflowInstanceFilter filter, CancellationToken cancellationToken = default)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public override void Configure()
{
Module.Configure<WorkflowRuntimeFeature>(feature =>
{
feature.WorkflowTriggerStore = sp => sp.GetRequiredService<MongoTriggerStore>();
feature.TriggerStore = sp => sp.GetRequiredService<MongoTriggerStore>();
feature.BookmarkStore = sp => sp.GetRequiredService<MongoBookmarkStore>();
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public override void Configure()
{
Module.Configure<WorkflowRuntimeFeature>(feature =>
{
feature.WorkflowTriggerStore = sp => sp.GetRequiredService<MongoTriggerStore>();
feature.TriggerStore = sp => sp.GetRequiredService<MongoTriggerStore>();
feature.BookmarkStore = sp => sp.GetRequiredService<MongoBookmarkStore>();
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using Elsa.Common.Contracts;
using Elsa.MongoDB.Common;
using Elsa.Workflows.Core.Contracts;
using Elsa.Workflows.Core.Models;
using Elsa.Workflows.Core.State;
using Elsa.Workflows.Runtime.Contracts;
Expand Down Expand Up @@ -44,7 +43,7 @@ public async ValueTask SaveAsync(string id, WorkflowState state, CancellationTok
(await _mongoStore.FindAsync(x => x.Id == id, cancellationToken));

/// <inheritdoc />
public async ValueTask<int> CountAsync(CountRunningWorkflowsArgs args, CancellationToken cancellationToken = default)
public async ValueTask<long> CountAsync(CountRunningWorkflowsArgs args, CancellationToken cancellationToken = default)
{
var query = _mongoStore.GetCollection().AsQueryable().Where(x => x.Status == WorkflowStatus.Running);

Expand Down