Skip to content

Commit 2cc60a0

Browse files
committed
Refactoring Code +add logging per teanant features +add hostingenvironnement per tenant features
1 parent af0de08 commit 2cc60a0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+934
-10486
lines changed

.appveyor.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,5 @@ deploy:
102102
#---------------------------------#
103103

104104
cache:
105-
- tools -> build.cake
105+
- tools -> build.cake
106+
- packages -> build.cake

Directory.Build.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
22

33
<PropertyGroup>
4-
<TargetFramework>netcoreapp2.1</TargetFramework>
4+
<TargetFramework>netstandard2.0</TargetFramework>
55
</PropertyGroup>
6-
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.1' ">
6+
<PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' OR '$(TargetFramework)' == 'netcoreapp2.1' ">
77
<DefineConstants>LIBLOG_PORTABLE</DefineConstants>
88
</PropertyGroup>
99

@@ -15,7 +15,7 @@
1515
<Import Project="Directory.CodeAnalysis.props" />
1616

1717
<PropertyGroup Label="Package Versions">
18-
<AspNetCoreVersion>2.1.0</AspNetCoreVersion>
18+
<AspNetCoreVersion>2.1.1</AspNetCoreVersion>
1919
<XunitVersion>2.3.1</XunitVersion>
2020
<XunitAnalyzersVersion>0.8.0</XunitAnalyzersVersion>
2121
</PropertyGroup>

Directory.CodeAnalysis.props

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,22 @@
1212
<Features>IOperation</Features>
1313
<NoWarn>$(NoWarn);1701;1702;1705;1101;1633</NoWarn>
1414
<!--<NoWarn>$(NoWarn),1573,1591,1712</NoWarn>-->
15-
<RunCodeAnalysis>false</RunCodeAnalysis>
15+
<RunCodeAnalysis>False</RunCodeAnalysis>
1616
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
1717
<WarningsAsErrors />
1818
<TreatSpecificWarningsAsErrors />
1919
</PropertyGroup>
2020

2121
<ItemGroup>
22-
<AdditionalFiles Include="$(SolutionDir)\CodeAnalysis.ruleset" Link="CodeAnalysis.ruleset" />
22+
<!--<AdditionalFiles Include="$(SolutionDir)\CodeAnalysis.ruleset" Link="CodeAnalysis.ruleset" />
2323
<AdditionalFiles Include="$(SolutionDir)\Stylecop.json" Link="Stylecop.json" />
24-
<AdditionalFiles Include="$(SolutionDir)\GlobalSuppressions.cs" Link="GlobalSuppressions.cs" />
24+
<AdditionalFiles Include="$(SolutionDir)\GlobalSuppressions.cs" Link="GlobalSuppressions.cs" />-->
25+
26+
<AdditionalFiles Include="$(ProjectDir)\CodeAnalysis.ruleset" Link="CodeAnalysis.ruleset" />
27+
<AdditionalFiles Include="$(ProjectDir)\Stylecop.json" Link="Stylecop.json" />
28+
<AdditionalFiles Include="$(ProjectDir)\GlobalSuppressions.cs" Link="GlobalSuppressions.cs" />
2529
</ItemGroup>
2630

31+
32+
2733
</Project>

build.cake

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,12 @@ Task("Test-OpenCover")
155155
.WithFilter("+[*]* -[*.UnitsTests]*")
156156
.WithFilter("-[xunit.*]*")
157157
.WithFilter("-[*.*Tests]*")
158-
//.AdditionalArguments("-hideskipped:All")
159158
;
160159

161160
foreach(var project in paths.Files.TestProjects)
162161
{
163162
try
164163
{
165-
166164
Information("Testing project " + MakeAbsolute(project).ToString());
167165
var projectFile = MakeAbsolute(project).ToString();
168166
var dotNetTestSettings = new DotNetCoreTestSettings
@@ -262,7 +260,8 @@ Task("Copy-Files")
262260
// .NET Core
263261
DotNetCorePublish(csprojFile.FullPath, new DotNetCorePublishSettings
264262
{
265-
Framework = "netcoreapp2.1",
263+
//Framework = "netcoreapp2.1",
264+
//Framework = "netstandard2.0",
266265
NoRestore = true,
267266
Configuration = configuration,
268267
OutputDirectory = outputDirectory21,

results.xml

Lines changed: 0 additions & 10004 deletions
This file was deleted.

src/Core.Mvc/Puzzle.Core.Multitenancy/Constants/MultitenancyConstants.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ internal static class MultitenancyConstants
77
public const string MultiTenantContextKey = nameof(MultiTenantContextKey);
88

99
public const string MultitenancyOptions = nameof(MultitenancyOptions);
10+
11+
public const string Tenants = nameof(Tenants);
1012

13+
1114
}
1215
}

src/Core.Mvc/Puzzle.Core.Multitenancy/Extensions/MultiTenancyConfigExtensions.cs

Lines changed: 84 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,112 @@
11
namespace Puzzle.Core.Multitenancy.Extensions
22
{
33
using System;
4+
using System.Collections.Generic;
45
using System.ComponentModel;
6+
using Microsoft.Extensions.Configuration;
7+
using Microsoft.Extensions.DependencyInjection;
58
using Puzzle.Core.Multitenancy.Internal.Configurations;
69
using Puzzle.Core.Multitenancy.Internal.Logging.LibLog;
710
using Puzzle.Core.Multitenancy.Internal.Logging.LibLog.LogProviders;
811

9-
internal static class MultiTenancyConfigExtensions
12+
/// <summary>
13+
/// Extensions methos for add/or override configuration for MultiTenancyConfig.
14+
/// </summary>
15+
public static class MultiTenancyConfigExtensions
1016
{
17+
18+
19+
/// <summary>
20+
/// Set current LogProvider.
21+
/// </summary>
22+
/// <typeparam name="TTenant"></typeparam>
23+
/// <typeparam name="TLogProvider"></typeparam>
24+
/// <param name="configuration"></param>
25+
/// <param name="provider"></param>
26+
/// <returns></returns>
1127
public static MultiTenancyConfig<TTenant> UseLogProvider<TTenant,TLogProvider>(this MultiTenancyConfig<TTenant> configuration, TLogProvider provider)
1228
where TLogProvider : ILogProvider
1329
{
14-
if (configuration == null)
15-
{
16-
throw new ArgumentNullException(nameof(configuration));
17-
}
18-
19-
if (provider == null)
20-
{
21-
throw new ArgumentNullException(nameof(provider));
22-
}
23-
2430
return configuration.Use(provider, x => LogProvider.SetCurrentLogProvider(x));
2531
}
2632

27-
28-
29-
30-
public static MultiTenancyConfig<TTenant> UseColoredConsoleLogProvider<TTenant>(this MultiTenancyConfig<TTenant> configuration)
33+
/// <summary>
34+
/// Activate ConsoleLog.
35+
/// </summary>
36+
/// <typeparam name="TTenant"></typeparam>
37+
/// <param name="configuration"></param>
38+
/// <returns></returns>
39+
internal static MultiTenancyConfig<TTenant> UseColoredConsoleLogProvider<TTenant>(this MultiTenancyConfig<TTenant> configuration)
3140
{
32-
if (configuration == null)
33-
{
34-
throw new ArgumentNullException(nameof(configuration));
35-
}
36-
3741
return configuration.UseLogProvider(new ColoredConsoleLogProvider());
3842
}
3943

40-
/*
41-
public static MultiTenancyConfig UseLog4NetLogProvider(this MultiTenancyConfig configuration)
42-
{
43-
if (configuration == null)
44-
{
45-
throw new ArgumentNullException(nameof(configuration));
46-
}
47-
48-
return configuration.UseLogProvider(new Log4NetLogProvider());
49-
}
50-
*/
5144

45+
/// <summary>
46+
/// Add serilo ProviderLog.
47+
/// </summary>
48+
/// <param name="configuration"></param>
49+
/// <returns></returns>
50+
internal static MultiTenancyConfig<TTenant> UseSerilogLogProvider<TTenant>(this MultiTenancyConfig<TTenant> configuration)
51+
{
52+
return configuration.UseLogProvider(new SerilogLogProvider());
53+
}
5254

53-
/*
55+
/// <summary>
56+
///
57+
/// </summary>
58+
/// <typeparam name="TTenant"></typeparam>
59+
/// <typeparam name="TLogProvider"></typeparam>
60+
/// <param name="configuration"></param>
61+
/// <param name="tenant"></param>
62+
/// <param name="tenantConfiguration"></param>
63+
/// <param name="provider"></param>
64+
/// <returns></returns>
65+
public static MultiTenancyConfig<TTenant> UseLogCustomServicesTenant<TTenant, TLogProvider>(
66+
this MultiTenancyConfig<TTenant> configuration, TTenant tenant,IConfiguration tenantConfiguration, TLogProvider provider)
67+
where TLogProvider : ILogProvider
68+
{
69+
return configuration.Use(provider, x => LogProvider.SetCurrentLogProvider(x));
70+
}
5471

55-
public static MultiTenancyConfig UseSerilogLogProvider(this MultiTenancyConfig configuration)
72+
/// <summary>
73+
///
74+
/// </summary>
75+
/// <typeparam name="TTenant"></typeparam>
76+
/// <param name="configuration"></param>
77+
/// <param name="func"></param>
78+
/// <returns></returns>
79+
public static MultiTenancyConfig<TTenant> UseCustomServicesTenant<TTenant>(
80+
this MultiTenancyConfig<TTenant> configuration, Func<IServiceCollection, TTenant,IConfiguration, ILogProvider> func)
5681
{
57-
if (configuration == null)
58-
{
59-
throw new ArgumentNullException(nameof(configuration));
60-
}
82+
configuration.SetTenantLogProvider(func);
83+
return configuration;
84+
}
6185

62-
return configuration.UseLogProvider(new SerilogLogProvider());
86+
/// <summary>
87+
/// Add additionnal ConfigureServices for specific tenant.
88+
/// </summary>
89+
/// <typeparam name="TTenant"></typeparam>
90+
/// <param name="configuration">Object represents MultiTenancyConfig.</param>
91+
/// <param name="action">Action to configure services.</param>
92+
/// <returns></returns>
93+
public static MultiTenancyConfig<TTenant> UseConfigureServicesTenant<TTenant>(
94+
this MultiTenancyConfig<TTenant> configuration, Action<IServiceCollection, TTenant> action)
95+
{
96+
return configuration.Use(action, x => configuration.SetConfigureServicesTenant(action));
6397
}
64-
*/
6598

99+
100+
101+
/// <summary>
102+
///
103+
/// </summary>
104+
/// <typeparam name="TTenant"></typeparam>
105+
/// <typeparam name="T"></typeparam>
106+
/// <param name="configuration"></param>
107+
/// <param name="entry"></param>
108+
/// <param name="entryAction"></param>
109+
/// <returns></returns>
66110
[EditorBrowsable(EditorBrowsableState.Never)]
67111
public static MultiTenancyConfig<TTenant> Use<TTenant,T>(this MultiTenancyConfig<TTenant> configuration, T entry, Action<T> entryAction)
68112
{
@@ -71,8 +115,7 @@ public static MultiTenancyConfig<TTenant> Use<TTenant,T>(this MultiTenancyConfig
71115
throw new ArgumentNullException(nameof(configuration));
72116
}
73117

74-
entryAction(entry);
75-
118+
entryAction?.Invoke(entry);
76119
return configuration;
77120
}
78121
}

src/Core.Mvc/Puzzle.Core.Multitenancy/Extensions/MultitenancyApplicationBuilderExtensions.cs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,6 @@
1010

1111
internal static class MultitenancyApplicationBuilderExtensions
1212
{
13-
/* internal static IApplicationBuilder UseMultitenancy<TTenant>(this IApplicationBuilder app)
14-
{
15-
if (app == null)
16-
{
17-
throw new ArgumentNullException($"Argument {nameof(app)} must not be null");
18-
}
19-
20-
using (IServiceScope serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
21-
{
22-
ILog<TenantResolutionMiddleware<TTenant>> logger = app.ApplicationServices.GetRequiredService<ILog<TenantResolutionMiddleware<TTenant>>>();
23-
ITenantResolver<TTenant> tenantResolver = serviceScope.ServiceProvider.GetRequiredService<ITenantResolver<TTenant>>();
24-
app.Use(next => new TenantResolutionMiddleware<TTenant>(next, app, logger, tenantResolver).Invoke);
25-
return app;
26-
}
27-
}*/
2813
public static IApplicationBuilder UseMultitenancy<TTenant>(this IApplicationBuilder app)
2914
{
3015
if (app == null)

0 commit comments

Comments
 (0)