Skip to content

Commit ab15d70

Browse files
committed
Make AddJsonApi chainable
1 parent b6bbbdb commit ab15d70

File tree

3 files changed

+30
-38
lines changed

3 files changed

+30
-38
lines changed

Diff for: src/Examples/JsonApiDotNetCoreExample/Startup.cs

+10-13
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,16 @@ public virtual IServiceProvider ConfigureServices(IServiceCollection services)
2929
{
3030
var loggerFactory = new LoggerFactory();
3131
loggerFactory.AddConsole(LogLevel.Trace);
32-
services.AddSingleton<ILoggerFactory>(loggerFactory);
3332

34-
services.AddDbContext<AppDbContext>(options =>
35-
{
36-
options.UseNpgsql(GetDbConnectionString());
37-
}, ServiceLifetime.Transient);
38-
39-
services.AddJsonApi<AppDbContext>(opt =>
40-
{
41-
opt.Namespace = "api/v1";
42-
opt.DefaultPageSize = 5;
43-
opt.IncludeTotalRecordCount = true;
44-
});
33+
services
34+
.AddSingleton<ILoggerFactory>(loggerFactory)
35+
.AddDbContext<AppDbContext>(options =>
36+
options.UseNpgsql(GetDbConnectionString()), ServiceLifetime.Transient)
37+
.AddJsonApi<AppDbContext>(options => {
38+
options.Namespace = "api/v1";
39+
options.DefaultPageSize = 5;
40+
options.IncludeTotalRecordCount = true;
41+
});
4542

4643
var provider = services.BuildServiceProvider();
4744
var appContext = provider.GetRequiredService<AppDbContext>();
@@ -67,4 +64,4 @@ public virtual void Configure(
6764

6865
public string GetDbConnectionString() => Config["Data:DefaultConnection"];
6966
}
70-
}
67+
}

Diff for: src/JsonApiDotNetCore/Extensions/IServiceCollectionExtensions.cs

+8-6
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,21 @@ namespace JsonApiDotNetCore.Extensions
2020
// ReSharper disable once InconsistentNaming
2121
public static class IServiceCollectionExtensions
2222
{
23-
public static void AddJsonApi<TContext>(this IServiceCollection services)
23+
public static IServiceCollection AddJsonApi<TContext>(this IServiceCollection services)
2424
where TContext : DbContext
2525
{
2626
var mvcBuilder = services.AddMvc();
27-
AddJsonApi<TContext>(services, (opt) => { }, mvcBuilder);
27+
return AddJsonApi<TContext>(services, (opt) => { }, mvcBuilder);
2828
}
2929

30-
public static void AddJsonApi<TContext>(this IServiceCollection services, Action<JsonApiOptions> options)
30+
public static IServiceCollection AddJsonApi<TContext>(this IServiceCollection services, Action<JsonApiOptions> options)
3131
where TContext : DbContext
3232
{
3333
var mvcBuilder = services.AddMvc();
34-
AddJsonApi<TContext>(services, options, mvcBuilder);
34+
return AddJsonApi<TContext>(services, options, mvcBuilder);
3535
}
3636

37-
public static void AddJsonApi<TContext>(this IServiceCollection services,
37+
public static IServiceCollection AddJsonApi<TContext>(this IServiceCollection services,
3838
Action<JsonApiOptions> options,
3939
IMvcBuilder mvcBuilder) where TContext : DbContext
4040
{
@@ -52,9 +52,10 @@ public static void AddJsonApi<TContext>(this IServiceCollection services,
5252
});
5353

5454
AddJsonApiInternals<TContext>(services, config);
55+
return services;
5556
}
5657

57-
public static void AddJsonApi(this IServiceCollection services,
58+
public static IServiceCollection AddJsonApi(this IServiceCollection services,
5859
Action<JsonApiOptions> options,
5960
IMvcBuilder mvcBuilder)
6061
{
@@ -70,6 +71,7 @@ public static void AddJsonApi(this IServiceCollection services,
7071
});
7172

7273
AddJsonApiInternals(services, config);
74+
return services;
7375
}
7476

7577
public static void AddJsonApiInternals<TContext>(

Diff for: test/JsonApiDotNetCoreExampleTests/Helpers/Startups/MetaStartup.cs

+12-19
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,18 @@ public MetaStartup(IHostingEnvironment env)
2020
public override IServiceProvider ConfigureServices(IServiceCollection services)
2121
{
2222
var loggerFactory = new LoggerFactory();
23-
24-
loggerFactory
25-
.AddConsole(LogLevel.Trace);
26-
27-
services.AddSingleton<ILoggerFactory>(loggerFactory);
28-
29-
services.AddDbContext<AppDbContext>(options =>
30-
{
31-
options.UseNpgsql(GetDbConnectionString());
32-
}, ServiceLifetime.Transient);
33-
34-
services.AddJsonApi<AppDbContext>(opt =>
35-
{
36-
opt.Namespace = "api/v1";
37-
opt.DefaultPageSize = 5;
38-
opt.IncludeTotalRecordCount = true;
39-
});
40-
41-
services.AddScoped<IRequestMeta, MetaService>();
23+
loggerFactory.AddConsole(LogLevel.Trace);
24+
25+
services
26+
.AddSingleton<ILoggerFactory>(loggerFactory)
27+
.AddDbContext<AppDbContext>(options =>
28+
options.UseNpgsql(GetDbConnectionString()), ServiceLifetime.Transient)
29+
.AddJsonApi<AppDbContext>(options => {
30+
options.Namespace = "api/v1";
31+
options.DefaultPageSize = 5;
32+
options.IncludeTotalRecordCount = true;
33+
})
34+
.AddScoped<IRequestMeta, MetaService>();
4235

4336
return services.BuildServiceProvider();
4437
}

0 commit comments

Comments
 (0)