Skip to content

Commit

Permalink
Replace the term "Entity" with "Model"
Browse files Browse the repository at this point in the history
  • Loading branch information
YuriyDurov committed Sep 30, 2023
1 parent 5b57a10 commit 01f1a4f
Show file tree
Hide file tree
Showing 37 changed files with 532 additions and 412 deletions.
11 changes: 10 additions & 1 deletion BitzArt.Flux.sln
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{1CF8
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ABC1CAE6-C4A2-42AB-8F24-9A32299CC512}"
ProjectSection(SolutionItems) = preProject
.github\workflows\Tests.yml = .github\workflows\Tests.yml
.github\workflows\Publish Flux.yml = .github\workflows\Publish Flux.yml
.github\workflows\Tests.yml = .github\workflows\Tests.yml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sample", "sample", "{83E6C753-C4C4-4C4E-8627-E9077F557159}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BitzArt.Flux.SampleApp", "sample\BitzArt.Flux.SampleApp\BitzArt.Flux.SampleApp.csproj", "{2D85CE63-7FB6-4D97-81EF-44351A94A883}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -48,6 +52,10 @@ Global
{6A90BCF4-FB3B-4B4A-A992-3D288972B4AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A90BCF4-FB3B-4B4A-A992-3D288972B4AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A90BCF4-FB3B-4B4A-A992-3D288972B4AF}.Release|Any CPU.Build.0 = Release|Any CPU
{2D85CE63-7FB6-4D97-81EF-44351A94A883}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D85CE63-7FB6-4D97-81EF-44351A94A883}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D85CE63-7FB6-4D97-81EF-44351A94A883}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D85CE63-7FB6-4D97-81EF-44351A94A883}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -58,6 +66,7 @@ Global
{AEA2C975-E99C-4E44-B121-0CF3D4956732} = {A3976FBB-F37A-4468-955D-8B2FCC79ACD0}
{6A90BCF4-FB3B-4B4A-A992-3D288972B4AF} = {A3976FBB-F37A-4468-955D-8B2FCC79ACD0}
{ABC1CAE6-C4A2-42AB-8F24-9A32299CC512} = {1CF88BCF-544C-463E-A639-594ADE0A9F15}
{2D85CE63-7FB6-4D97-81EF-44351A94A883} = {83E6C753-C4C4-4C4E-8627-E9077F557159}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {251D5A13-6C1B-4B0D-A6F5-3B95FF4C0F54}
Expand Down
19 changes: 19 additions & 0 deletions sample/BitzArt.Flux.SampleApp/BitzArt.Flux.SampleApp.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\src\BitzArt.Flux.REST\BitzArt.Flux.REST.csproj" />
</ItemGroup>

</Project>
12 changes: 12 additions & 0 deletions sample/BitzArt.Flux.SampleApp/Models/Author.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.Text.Json.Serialization;

namespace BitzArt.Flux.SampleApp.Models;

public class Author
{
[JsonPropertyName("id")]
public int? Id { get; set; }

[JsonPropertyName("name")]
public string? Name { get; set; }
}
18 changes: 18 additions & 0 deletions sample/BitzArt.Flux.SampleApp/Models/Book.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System.Text.Json.Serialization;

namespace BitzArt.Flux.SampleApp.Models;

public class Book
{
[JsonPropertyName("id")]
public int? Id { get; set; }

[JsonPropertyName("title")]
public string? Title { get; set; }

[JsonPropertyName("description")]
public string? Description { get; set; }

[JsonPropertyName("author")]
public string? Author { get; set; }
}
22 changes: 22 additions & 0 deletions sample/BitzArt.Flux.SampleApp/Models/TestController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using BitzArt.Flux.SampleApp.Models;
using Microsoft.AspNetCore.Mvc;

namespace BitzArt.Flux.SampleApp;

internal class TestController : ControllerBase
{
private readonly IFluxContext _flux;

public TestController(IFluxContext flux)
{
_flux = flux;
}

[HttpGet]
public async Task<IActionResult> GetBookAsync()
{
var book = await _flux.Model<Book>().GetAsync(1);

return Ok(book);
}
}
40 changes: 40 additions & 0 deletions sample/BitzArt.Flux.SampleApp/Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using BitzArt.Flux.SampleApp.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System.Text.Json.Serialization;

namespace BitzArt.Flux.SampleApp;

internal class Program
{
private static void Main(string[] args)
{
var services = new ServiceCollection();

services.AddFlux(x =>
{
x.AddService("library-api")
.UsingRest("http://your-backend-url")
.AddModel<Author>()
.WithEndpoint("authors")
.AddModel<Book>()
.WithEndpoint("books")
.WithPageEndpoint("authors/{authorId}/books");

x.AddService("library-api")
.UsingRest("http://your-backend-url")
.ConfigureHttpClient(client =>
{
client.DefaultRequestHeaders.Add("X-Api-Key", "MyApiKey");
})
.ConfigureJson(json =>
{
json.Converters.Add(new JsonStringEnumConverter());
});
});

var serviceProvider = services.BuildServiceProvider();

var flux = serviceProvider.GetRequiredService<IFluxContext>();
}
}
54 changes: 0 additions & 54 deletions src/BitzArt.Flux.REST/Builder/Extensions/AddEntityExtension.cs

This file was deleted.

54 changes: 54 additions & 0 deletions src/BitzArt.Flux.REST/Builder/Extensions/AddModelExtension.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using Microsoft.Extensions.DependencyInjection;

namespace BitzArt.Flux;

public static class AddModelExtension
{
public static IFluxRestModelBuilder<TModel> AddModel<TModel>(this IFluxRestServiceBuilder serviceBuilder, string? endpoint = null)
where TModel : class
{
var builder = new FluxRestModelBuilder<TModel>(serviceBuilder);

var services = serviceBuilder.Services;
var serviceContext = builder.ServiceFactory;

serviceContext.AddModel<TModel>(builder.ModelOptions);

services.AddScoped(x =>
{
var factory = x.GetRequiredService<IFluxFactory>();
return factory.GetModelContext<TModel>(x, serviceContext.ServiceName);
});

if (endpoint is not null) return builder.WithEndpoint(endpoint);

return builder;
}

public static IFluxRestModelBuilder<TModel, TKey> AddModel<TModel, TKey>(this IFluxRestServiceBuilder serviceBuilder, string? endpoint = null)
where TModel : class
{
var builder = new FluxRestModelBuilder<TModel, TKey>(serviceBuilder);

var services = serviceBuilder.Services;
var serviceContext = serviceBuilder.ServiceFactory;

serviceContext.AddModel<TModel, TKey>(builder.ModelOptions);

services.AddScoped(x =>
{
var provider = x.GetRequiredService<IFluxFactory>();
return provider.GetModelContext<TModel, TKey>(x, serviceContext.ServiceName);
});

services.AddScoped<IFluxModelContext<TModel>>(x =>
{
var provider = x.GetRequiredService<IFluxFactory>();
return provider.GetModelContext<TModel, TKey>(x, serviceContext.ServiceName);
});

if (endpoint is not null) return builder.WithEndpoint(endpoint);

return builder;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

public static class WithEndpointExtension
{
public static IFluxRestEntityBuilder<TEntity> WithEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, string endpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel> WithEndpoint<TModel>(this IFluxRestModelBuilder<TModel> builder, string endpoint)
where TModel : class
{
builder.EntityOptions.Endpoint = endpoint;
builder.ModelOptions.Endpoint = endpoint;

return builder;
}

public static IFluxRestEntityBuilder<TEntity, TKey> WithEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, string endpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel, TKey> WithEndpoint<TModel, TKey>(this IFluxRestModelBuilder<TModel, TKey> builder, string endpoint)
where TModel : class
{
builder.EntityOptions.Endpoint = endpoint;
builder.ModelOptions.Endpoint = endpoint;

return builder;
}
Expand Down
48 changes: 24 additions & 24 deletions src/BitzArt.Flux.REST/Builder/Extensions/WithIdEndpointExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,66 +2,66 @@

public static class WithIdEndpointExtension
{
public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, string endpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel> WithIdEndpoint<TModel>(this IFluxRestModelBuilder<TModel> builder, string endpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => endpoint;
builder.ModelOptions.GetIdEndpointAction = (key, parameters) => endpoint;

return builder;
}

public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, string endpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel, TKey> WithIdEndpoint<TModel, TKey>(this IFluxRestModelBuilder<TModel, TKey> builder, string endpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => endpoint;
builder.ModelOptions.GetIdEndpointAction = (key, parameters) => endpoint;

return builder;
}

public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, Func<string> getEndpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel> WithIdEndpoint<TModel>(this IFluxRestModelBuilder<TModel> builder, Func<string> getEndpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint();
builder.ModelOptions.GetIdEndpointAction = (key, parameters) => getEndpoint();

return builder;
}

public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, Func<string> getEndpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel, TKey> WithIdEndpoint<TModel, TKey>(this IFluxRestModelBuilder<TModel, TKey> builder, Func<string> getEndpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint();
builder.ModelOptions.GetIdEndpointAction = (key, parameters) => getEndpoint();

return builder;
}

public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, Func<object?, string> getEndpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel> WithIdEndpoint<TModel>(this IFluxRestModelBuilder<TModel> builder, Func<object?, string> getEndpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(key);
builder.ModelOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(key);

return builder;
}

public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, Func<TKey?, string> getEndpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel, TKey> WithIdEndpoint<TModel, TKey>(this IFluxRestModelBuilder<TModel, TKey> builder, Func<TKey?, string> getEndpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(key);
builder.ModelOptions.GetIdEndpointAction = (key, parameters) => getEndpoint(key);

return builder;
}

public static IFluxRestEntityBuilder<TEntity> WithIdEndpoint<TEntity>(this IFluxRestEntityBuilder<TEntity> builder, Func<object?, object[]?, string> getEndpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel> WithIdEndpoint<TModel>(this IFluxRestModelBuilder<TModel> builder, Func<object?, object[]?, string> getEndpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = getEndpoint;
builder.ModelOptions.GetIdEndpointAction = getEndpoint;

return builder;
}

public static IFluxRestEntityBuilder<TEntity, TKey> WithIdEndpoint<TEntity, TKey>(this IFluxRestEntityBuilder<TEntity, TKey> builder, Func<TKey?, object[]?, string> getEndpoint)
where TEntity : class
public static IFluxRestModelBuilder<TModel, TKey> WithIdEndpoint<TModel, TKey>(this IFluxRestModelBuilder<TModel, TKey> builder, Func<TKey?, object[]?, string> getEndpoint)
where TModel : class
{
builder.EntityOptions.GetIdEndpointAction = getEndpoint;
builder.ModelOptions.GetIdEndpointAction = getEndpoint;

return builder;
}
Expand Down
Loading

0 comments on commit 01f1a4f

Please sign in to comment.