Skip to content

Commit

Permalink
Merging 0.19.0
Browse files Browse the repository at this point in the history
  • Loading branch information
tmm360 committed Jul 3, 2020
2 parents 1eeaa91 + 86fa789 commit 2d6c4fd
Show file tree
Hide file tree
Showing 136 changed files with 3,003 additions and 1,517 deletions.
31 changes: 31 additions & 0 deletions .github/workflows/build-test-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Build test and package .Net Core library - MongODM

on:
push:
branches: [ master, dev ]

jobs:
build-test-package:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@master
with:
fetch-depth: 0

- name: Setup .NET Core SDK
uses: actions/setup-dotnet@master
with:
dotnet-version: '3.1.x'

- name: Build with dotnet
run: dotnet build --configuration Release

- name: Run unit tests
run: dotnet test --configuration Release

- name: Generate nuget package
run: dotnet pack --configuration Release -o nupkg

- name: Push packages
run: dotnet nuget push './nupkg/*.nupkg' --api-key ${{secrets.MYGET_APIKEY}} --source https://www.myget.org/F/etherna/api/v3/index.json
78 changes: 78 additions & 0 deletions MongODM.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.156
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{490DAED7-DAD8-459A-A20E-F57F2F6F619E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{CF1ABDEA-794F-4474-858D-BCB61F367D72}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MongODM.Hangfire", "src\MongODM.Hangfire\MongODM.Hangfire.csproj", "{10897D0D-4898-4A4D-8D1E-B2435E93D9A1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExecutionContext", "src\ExecutionContext\ExecutionContext.csproj", "{DB6C020D-1C93-4456-8FB5-EF7CF505DF7B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ExecutionContext.Tests", "test\ExecutionContext.Tests\ExecutionContext.Tests.csproj", "{BF4F963A-DBCE-4C53-A209-502F4CAF12C5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MongODM.AspNetCore", "src\MongODM.AspNetCore\MongODM.AspNetCore.csproj", "{6374F645-5D17-494E-9529-7F83426900B3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MongODM.Core", "src\MongODM.Core\MongODM.Core.csproj", "{4F2498A9-D60D-4D49-95B9-BC78EE2917B5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MongODM.Core.Tests", "test\MongODM.Core.Tests\MongODM.Core.Tests.csproj", "{50D6BEE5-54B5-43F3-BA92-6107AB6E311E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{03C64D98-FF9F-4760-AE82-203953FF4940}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{D4BB5972-5F7B-43ED-81C1-69ECF0E62D1E}"
ProjectSection(SolutionItems) = preProject
.github\workflows\build-test-package.yml = .github\workflows\build-test-package.yml
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{10897D0D-4898-4A4D-8D1E-B2435E93D9A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{10897D0D-4898-4A4D-8D1E-B2435E93D9A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{10897D0D-4898-4A4D-8D1E-B2435E93D9A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{10897D0D-4898-4A4D-8D1E-B2435E93D9A1}.Release|Any CPU.Build.0 = Release|Any CPU
{DB6C020D-1C93-4456-8FB5-EF7CF505DF7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB6C020D-1C93-4456-8FB5-EF7CF505DF7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB6C020D-1C93-4456-8FB5-EF7CF505DF7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB6C020D-1C93-4456-8FB5-EF7CF505DF7B}.Release|Any CPU.Build.0 = Release|Any CPU
{BF4F963A-DBCE-4C53-A209-502F4CAF12C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF4F963A-DBCE-4C53-A209-502F4CAF12C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF4F963A-DBCE-4C53-A209-502F4CAF12C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF4F963A-DBCE-4C53-A209-502F4CAF12C5}.Release|Any CPU.Build.0 = Release|Any CPU
{6374F645-5D17-494E-9529-7F83426900B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6374F645-5D17-494E-9529-7F83426900B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6374F645-5D17-494E-9529-7F83426900B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6374F645-5D17-494E-9529-7F83426900B3}.Release|Any CPU.Build.0 = Release|Any CPU
{4F2498A9-D60D-4D49-95B9-BC78EE2917B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4F2498A9-D60D-4D49-95B9-BC78EE2917B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4F2498A9-D60D-4D49-95B9-BC78EE2917B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4F2498A9-D60D-4D49-95B9-BC78EE2917B5}.Release|Any CPU.Build.0 = Release|Any CPU
{50D6BEE5-54B5-43F3-BA92-6107AB6E311E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50D6BEE5-54B5-43F3-BA92-6107AB6E311E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50D6BEE5-54B5-43F3-BA92-6107AB6E311E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50D6BEE5-54B5-43F3-BA92-6107AB6E311E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{10897D0D-4898-4A4D-8D1E-B2435E93D9A1} = {490DAED7-DAD8-459A-A20E-F57F2F6F619E}
{DB6C020D-1C93-4456-8FB5-EF7CF505DF7B} = {490DAED7-DAD8-459A-A20E-F57F2F6F619E}
{BF4F963A-DBCE-4C53-A209-502F4CAF12C5} = {CF1ABDEA-794F-4474-858D-BCB61F367D72}
{6374F645-5D17-494E-9529-7F83426900B3} = {490DAED7-DAD8-459A-A20E-F57F2F6F619E}
{4F2498A9-D60D-4D49-95B9-BC78EE2917B5} = {490DAED7-DAD8-459A-A20E-F57F2F6F619E}
{50D6BEE5-54B5-43F3-BA92-6107AB6E311E} = {CF1ABDEA-794F-4474-858D-BCB61F367D72}
{D4BB5972-5F7B-43ED-81C1-69ECF0E62D1E} = {03C64D98-FF9F-4760-AE82-203953FF4940}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {43A8089E-9445-4DE1-B509-F049E211B555}
EndGlobalSection
EndGlobal
39 changes: 0 additions & 39 deletions MongoDM.sln

This file was deleted.

1 change: 1 addition & 0 deletions doc/DbContextClassDiagram.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<mxfile host="Electron" modified="2020-02-12T02:07:49.882Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.6.5 Chrome/80.0.3987.86 Electron/8.0.0 Safari/537.36" etag="DZfUQQbziV9wZCdCpsGX" version="12.6.5" type="device"><diagram name="Page-1" id="9f46799a-70d6-7492-0946-bef42562c5a5">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</diagram></mxfile>
42 changes: 42 additions & 0 deletions src/ExecutionContext/AsyncLocal/AsyncLocalContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Threading;

namespace Etherna.ExecContext.AsyncLocal
{
/// <summary>
/// Async local context implementation. This can be used as singleton or with multiple instances.
/// The <see cref="AsyncLocal{T}"/> container permits to have an Item instance inside this
/// method calling tree.
/// </summary>
/// <remarks>
/// Before try to use an async local context, call the method <see cref="InitAsyncLocalContext"/>
/// for initialize the <see cref="AsyncLocal{T}"/> container, and receive a context handler.
/// After have used, dispose the handler for destroy the current context dictionary.
/// </remarks>
public class AsyncLocalContext : IAsyncLocalContext, IHandledAsyncLocalContext
{
// Fields.
private static readonly AsyncLocal<IDictionary<object, object>?> asyncLocalContext = new AsyncLocal<IDictionary<object, object>?>();

// Properties.
public IDictionary<object, object>? Items => asyncLocalContext.Value;

// Static properties.
public static IAsyncLocalContext Instance { get; } = new AsyncLocalContext();

// Methods.
public IAsyncLocalContextHandler InitAsyncLocalContext()
{
if (asyncLocalContext.Value != null)
throw new InvalidOperationException("Only one context at time is supported");

asyncLocalContext.Value = new Dictionary<object, object>();

return new AsyncLocalContextHandler(this);
}

public void OnDisposed(IAsyncLocalContextHandler context) =>
asyncLocalContext.Value = null;
}
}
21 changes: 21 additions & 0 deletions src/ExecutionContext/AsyncLocal/AsyncLocalContextHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
namespace Etherna.ExecContext.AsyncLocal
{
/// <summary>
/// The handler for an <see cref="AsyncLocalContext"/> initialization.
/// Dispose this for release the context.
/// </summary>
public sealed class AsyncLocalContextHandler : IAsyncLocalContextHandler
{
// Constructors.
internal AsyncLocalContextHandler(IHandledAsyncLocalContext handledContext)
{
HandledContext = handledContext;
}

// Properties.
internal IHandledAsyncLocalContext HandledContext { get; }

// Methods.
public void Dispose() => HandledContext.OnDisposed(this);
}
}
18 changes: 18 additions & 0 deletions src/ExecutionContext/AsyncLocal/IAsyncLocalContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System;

namespace Etherna.ExecContext.AsyncLocal
{
/// <summary>
/// The <see cref="AsyncLocalContext"/> interface.
/// Permits to create an async local context living with the method calling tree.
/// </summary>
public interface IAsyncLocalContext : IExecutionContext
{
/// <summary>
/// Initialize a new async local context
/// </summary>
/// <returns>The new context handler</returns>
/// <exception cref="InvalidOperationException">Throw when another local context is found</exception>
IAsyncLocalContextHandler InitAsyncLocalContext();
}
}
11 changes: 11 additions & 0 deletions src/ExecutionContext/AsyncLocal/IAsyncLocalContextHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System;

namespace Etherna.ExecContext.AsyncLocal
{
/// <summary>
/// A disposable interface for <see cref="AsyncLocalContextHandler"/>
/// </summary>
public interface IAsyncLocalContextHandler : IDisposable
{
}
}
11 changes: 11 additions & 0 deletions src/ExecutionContext/AsyncLocal/IHandledAsyncLocalContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace Etherna.ExecContext.AsyncLocal
{
/// <summary>
/// Interface used by <see cref="AsyncLocalContextHandler"/> for comunicate with its
/// creator <see cref="AsyncLocalContext"/>.
/// </summary>
internal interface IHandledAsyncLocalContext
{
void OnDisposed(IAsyncLocalContextHandler context);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System;

namespace Etherna.ExecContext.Exceptions
{
public class ExecutionContextNotFoundException : Exception
{
public ExecutionContextNotFoundException(string message) : base(message)
{ }

public ExecutionContextNotFoundException(string message, Exception innerException) : base(message, innerException)
{ }

public ExecutionContextNotFoundException()
{ }
}
}
25 changes: 25 additions & 0 deletions src/ExecutionContext/ExecutionContext.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<RootNamespace>Etherna.ExecContext</RootNamespace>
<Authors>Etherna Sagl</Authors>
<Description>Execution context provider</Description>
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
<RepositoryUrl>https://github.com/Etherna/mongodm</RepositoryUrl>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="GitVersionTask" Version="5.3.7">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>

</Project>
Loading

0 comments on commit 2d6c4fd

Please sign in to comment.