Namespace rename #2
226
.editorconfig
Normal file
226
.editorconfig
Normal file
@ -0,0 +1,226 @@
|
||||
# Remove the line below if you want to inherit .editorconfig settings from higher directories
|
||||
root = true
|
||||
|
||||
# C# files
|
||||
[*.cs]
|
||||
|
||||
#### Core EditorConfig Options ####
|
||||
|
||||
# Indentation and spacing
|
||||
indent_size = 4
|
||||
indent_style = tab
|
||||
tab_width = 4
|
||||
|
||||
# New line preferences
|
||||
end_of_line = crlf
|
||||
insert_final_newline = false
|
||||
|
||||
#### .NET Coding Conventions ####
|
||||
|
||||
# Organize usings
|
||||
dotnet_separate_import_directive_groups = false
|
||||
dotnet_sort_system_directives_first = true
|
||||
file_header_template = unset
|
||||
|
||||
# this. and Me. preferences
|
||||
dotnet_style_qualification_for_event = false
|
||||
dotnet_style_qualification_for_field = false
|
||||
dotnet_style_qualification_for_method = false
|
||||
dotnet_style_qualification_for_property = false
|
||||
|
||||
# Language keywords vs BCL types preferences
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true
|
||||
dotnet_style_predefined_type_for_member_access = true
|
||||
|
||||
# Parentheses preferences
|
||||
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
|
||||
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
|
||||
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
|
||||
|
||||
# Modifier preferences
|
||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members
|
||||
|
||||
# Expression-level preferences
|
||||
dotnet_style_coalesce_expression = true
|
||||
dotnet_style_collection_initializer = true
|
||||
dotnet_style_explicit_tuple_names = true
|
||||
dotnet_style_namespace_match_folder = true
|
||||
dotnet_style_null_propagation = true
|
||||
dotnet_style_object_initializer = true
|
||||
dotnet_style_operator_placement_when_wrapping = beginning_of_line
|
||||
dotnet_style_prefer_auto_properties = true
|
||||
dotnet_style_prefer_compound_assignment = true
|
||||
dotnet_style_prefer_conditional_expression_over_assignment = true
|
||||
dotnet_style_prefer_conditional_expression_over_return = true
|
||||
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
|
||||
dotnet_style_prefer_inferred_anonymous_type_member_names = true
|
||||
dotnet_style_prefer_inferred_tuple_names = true
|
||||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
|
||||
dotnet_style_prefer_simplified_boolean_expressions = true
|
||||
dotnet_style_prefer_simplified_interpolation = true
|
||||
|
||||
# Field preferences
|
||||
dotnet_style_readonly_field = true
|
||||
|
||||
# Parameter preferences
|
||||
dotnet_code_quality_unused_parameters = all
|
||||
|
||||
# Suppression preferences
|
||||
dotnet_remove_unnecessary_suppression_exclusions = none
|
||||
|
||||
# New line preferences
|
||||
dotnet_style_allow_multiple_blank_lines_experimental = false
|
||||
dotnet_style_allow_statement_immediately_after_block_experimental = false
|
||||
|
||||
#### C# Coding Conventions ####
|
||||
|
||||
# var preferences
|
||||
csharp_style_var_elsewhere = true
|
||||
csharp_style_var_for_built_in_types = true
|
||||
csharp_style_var_when_type_is_apparent = true
|
||||
|
||||
# Expression-bodied members
|
||||
csharp_style_expression_bodied_accessors = true
|
||||
csharp_style_expression_bodied_constructors = false
|
||||
csharp_style_expression_bodied_indexers = true
|
||||
csharp_style_expression_bodied_lambdas = true
|
||||
csharp_style_expression_bodied_local_functions = false
|
||||
csharp_style_expression_bodied_methods = false
|
||||
csharp_style_expression_bodied_operators = false
|
||||
csharp_style_expression_bodied_properties = true
|
||||
|
||||
# Pattern matching preferences
|
||||
csharp_style_pattern_matching_over_as_with_null_check = true
|
||||
csharp_style_pattern_matching_over_is_with_cast_check = true
|
||||
csharp_style_prefer_extended_property_pattern = true
|
||||
csharp_style_prefer_not_pattern = true
|
||||
csharp_style_prefer_pattern_matching = true
|
||||
csharp_style_prefer_switch_expression = true
|
||||
|
||||
# Null-checking preferences
|
||||
csharp_style_conditional_delegate_call = true
|
||||
|
||||
# Modifier preferences
|
||||
csharp_prefer_static_local_function = true
|
||||
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
|
||||
csharp_style_prefer_readonly_struct = true
|
||||
|
||||
# Code-block preferences
|
||||
csharp_prefer_braces = when_multiline
|
||||
csharp_prefer_simple_using_statement = true
|
||||
csharp_style_namespace_declarations = file_scoped
|
||||
csharp_style_prefer_method_group_conversion = true
|
||||
csharp_style_prefer_top_level_statements = true
|
||||
|
||||
# Expression-level preferences
|
||||
csharp_prefer_simple_default_expression = true
|
||||
csharp_style_deconstructed_variable_declaration = true
|
||||
csharp_style_implicit_object_creation_when_type_is_apparent = true
|
||||
csharp_style_inlined_variable_declaration = true
|
||||
csharp_style_prefer_index_operator = true
|
||||
csharp_style_prefer_local_over_anonymous_function = true
|
||||
csharp_style_prefer_null_check_over_type_check = true
|
||||
csharp_style_prefer_range_operator = true
|
||||
csharp_style_prefer_tuple_swap = true
|
||||
csharp_style_prefer_utf8_string_literals = true
|
||||
csharp_style_throw_expression = true
|
||||
csharp_style_unused_value_assignment_preference = discard_variable
|
||||
csharp_style_unused_value_expression_statement_preference = discard_variable
|
||||
|
||||
# 'using' directive preferences
|
||||
csharp_using_directive_placement = outside_namespace
|
||||
|
||||
# New line preferences
|
||||
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
|
||||
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
|
||||
csharp_style_allow_embedded_statements_on_same_line_experimental = false
|
||||
|
||||
#### C# Formatting Rules ####
|
||||
|
||||
# New line preferences
|
||||
csharp_new_line_before_catch = true
|
||||
csharp_new_line_before_else = true
|
||||
csharp_new_line_before_finally = true
|
||||
csharp_new_line_before_members_in_anonymous_types = true
|
||||
csharp_new_line_before_members_in_object_initializers = true
|
||||
csharp_new_line_before_open_brace = all
|
||||
csharp_new_line_between_query_expression_clauses = true
|
||||
|
||||
# Indentation preferences
|
||||
csharp_indent_block_contents = true
|
||||
csharp_indent_braces = false
|
||||
csharp_indent_case_contents = true
|
||||
csharp_indent_case_contents_when_block = true
|
||||
csharp_indent_labels = one_less_than_current
|
||||
csharp_indent_switch_labels = true
|
||||
|
||||
# Space preferences
|
||||
csharp_space_after_cast = false
|
||||
csharp_space_after_colon_in_inheritance_clause = true
|
||||
csharp_space_after_comma = true
|
||||
csharp_space_after_dot = false
|
||||
csharp_space_after_keywords_in_control_flow_statements = true
|
||||
csharp_space_after_semicolon_in_for_statement = true
|
||||
csharp_space_around_binary_operators = before_and_after
|
||||
csharp_space_around_declaration_statements = false
|
||||
csharp_space_before_colon_in_inheritance_clause = true
|
||||
csharp_space_before_comma = false
|
||||
csharp_space_before_dot = false
|
||||
csharp_space_before_open_square_brackets = false
|
||||
csharp_space_before_semicolon_in_for_statement = false
|
||||
csharp_space_between_empty_square_brackets = false
|
||||
csharp_space_between_method_call_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_call_name_and_opening_parenthesis = false
|
||||
csharp_space_between_method_call_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
|
||||
csharp_space_between_method_declaration_name_and_open_parenthesis = false
|
||||
csharp_space_between_method_declaration_parameter_list_parentheses = false
|
||||
csharp_space_between_parentheses = false
|
||||
csharp_space_between_square_brackets = false
|
||||
|
||||
# Wrapping preferences
|
||||
csharp_preserve_single_line_blocks = true
|
||||
csharp_preserve_single_line_statements = false
|
||||
|
||||
#### Naming styles ####
|
||||
|
||||
# Naming rules
|
||||
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
|
||||
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
|
||||
|
||||
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
|
||||
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
|
||||
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
|
||||
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
|
||||
|
||||
# Symbol specifications
|
||||
|
||||
dotnet_naming_symbols.interface.applicable_kinds = interface
|
||||
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.interface.required_modifiers =
|
||||
|
||||
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
|
||||
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.types.required_modifiers =
|
||||
|
||||
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
|
||||
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
|
||||
dotnet_naming_symbols.non_field_members.required_modifiers =
|
||||
|
||||
# Naming styles
|
||||
|
||||
dotnet_naming_style.pascal_case.required_prefix =
|
||||
dotnet_naming_style.pascal_case.required_suffix =
|
||||
dotnet_naming_style.pascal_case.word_separator =
|
||||
dotnet_naming_style.pascal_case.capitalization = pascal_case
|
||||
|
||||
dotnet_naming_style.begins_with_i.required_prefix = I
|
||||
dotnet_naming_style.begins_with_i.required_suffix =
|
||||
dotnet_naming_style.begins_with_i.word_separator =
|
||||
dotnet_naming_style.begins_with_i.capitalization = pascal_case
|
@ -1,42 +0,0 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common.Documents
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the base entity for all documents.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Document is primary entity of the business processes. It provides
|
||||
/// schema which is used in a business process lifecycle. Documents, apart from
|
||||
/// some basic validation, do not provide any specifiec business logic. Business
|
||||
/// processes are entirely responsible for the business logic.
|
||||
/// </remarks>
|
||||
public interface IDocument<TPrimaryKey> : IPrimaryKey<TPrimaryKey>
|
||||
where TPrimaryKey : notnull
|
||||
{
|
||||
/// <summary>
|
||||
/// The date when document was created.
|
||||
/// </summary>
|
||||
DateTimeOffset Created { get; init; }
|
||||
/// <summary>
|
||||
/// The date when document was last updated.
|
||||
/// </summary>
|
||||
DateTimeOffset? Modified { get; init; }
|
||||
/// <summary>
|
||||
/// The unique identifier of the document. This is
|
||||
/// usually set by a customer specific numbering system.
|
||||
/// </summary>
|
||||
string? Code { get; init; }
|
||||
/// <summary>
|
||||
/// The user which created the document. Can be null if document was created by the system.
|
||||
/// </summary>
|
||||
int? Author { get; init; }
|
||||
/// <summary>
|
||||
/// The user last modified the document. Once user modifies the document it becomes the Owner.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This behavior could be overriden in documents implementation.
|
||||
/// </remarks>
|
||||
int? Owner { get; init; }
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Common.Notes</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
||||
<ProjectReference Include="..\Common.Model\Common.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,16 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
|
||||
<ProjectReference Include="..\..\Framework\Connected.Entities\Connected.Entities.csproj" />
|
||||
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
|
||||
<ProjectReference Include="..\Common.Notes.Model\Common.Notes.Model.csproj" />
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,15 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Common.Numbering</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Framework\Connected.Middleware\Connected.Middleware.csproj" />
|
||||
<ProjectReference Include="..\Common.Numbering.Model\Common.Numbering.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,16 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
|
||||
<ProjectReference Include="..\Common.Numbering.Middleware\Common.Numbering.Middleware.csproj" />
|
||||
<ProjectReference Include="..\Common.Numbering.Model\Common.Numbering.Model.csproj" />
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,39 +0,0 @@
|
||||
using Common.Documents;
|
||||
using Common.Globalization;
|
||||
using Common.Security.Identity;
|
||||
using Connected;
|
||||
using Connected.Annotations;
|
||||
using Connected.Globalization;
|
||||
using Connected.Net.Endpoints;
|
||||
using Connected.Net.Server;
|
||||
using Connected.Security.Identity;
|
||||
using Connected.ServiceModel;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
[assembly: MicroService(MicroServiceType.Service)]
|
||||
|
||||
namespace Common
|
||||
{
|
||||
internal class CommonStartup : Startup
|
||||
{
|
||||
protected override void OnConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddScoped(typeof(IGlobalizationService), typeof(GlobalizationService));
|
||||
services.AddScoped(typeof(IIdentityService), typeof(IdentityService));
|
||||
services.AddTransient(typeof(IDocumentLocker<,>), typeof(DocumentLocker<,>));
|
||||
}
|
||||
|
||||
protected override async Task OnInitialize(Dictionary<string, string> args)
|
||||
{
|
||||
if (Services is null || Services.GetService<IContextProvider>() is not IContextProvider provider)
|
||||
return;
|
||||
|
||||
using var ctx = provider.Create();
|
||||
|
||||
if (ctx.GetService<IEndpointService>() is not IEndpointService endpoints || ctx.GetService<IEndpointServer>() is not IEndpointServer server)
|
||||
return;
|
||||
|
||||
await server.Initialize(await endpoints.Query(), ctx.CancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
namespace Common;
|
||||
namespace Connected.Common;
|
||||
|
||||
public static class CommonRoutes
|
||||
{
|
@ -5,7 +5,7 @@
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
||||
<RootNamespace>Common</RootNamespace>
|
||||
<RootNamespace>Connected.Common</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
@ -1,8 +1,8 @@
|
||||
using Connected.Annotations;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Connected.Annotations;
|
||||
using Connected.ServiceModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
|
||||
public class DocumentArgs : Dto
|
||||
{
|
41
Connected.Common.Model/Documents/IDocument.cs
Normal file
41
Connected.Common.Model/Documents/IDocument.cs
Normal file
@ -0,0 +1,41 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Connected.Common.Documents;
|
||||
|
||||
/// <summary>
|
||||
/// Represents the base entity for all documents.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Document is primary entity of the business processes. It provides
|
||||
/// schema which is used in a business process lifecycle. Documents, apart from
|
||||
/// some basic validation, do not provide any specifiec business logic. Business
|
||||
/// processes are entirely responsible for the business logic.
|
||||
/// </remarks>
|
||||
public interface IDocument<TPrimaryKey> : IPrimaryKey<TPrimaryKey>
|
||||
where TPrimaryKey : notnull
|
||||
{
|
||||
/// <summary>
|
||||
/// The date when document was created.
|
||||
/// </summary>
|
||||
DateTimeOffset Created { get; init; }
|
||||
/// <summary>
|
||||
/// The date when document was last updated.
|
||||
/// </summary>
|
||||
DateTimeOffset? Modified { get; init; }
|
||||
/// <summary>
|
||||
/// The unique identifier of the document. This is
|
||||
/// usually set by a customer specific numbering system.
|
||||
/// </summary>
|
||||
string? Code { get; init; }
|
||||
/// <summary>
|
||||
/// The user which created the document. Can be null if document was created by the system.
|
||||
/// </summary>
|
||||
int? Author { get; init; }
|
||||
/// <summary>
|
||||
/// The user last modified the document. Once user modifies the document it becomes the Owner.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This behavior could be overriden in documents implementation.
|
||||
/// </remarks>
|
||||
int? Owner { get; init; }
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
using Connected.Notifications;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
public interface IDocumentService<TDocumentPrimaryKey, TDetailPrimaryKey> : IServiceNotifications<TDocumentPrimaryKey>
|
||||
{
|
||||
event ServiceEventHandler<PrimaryKeyEventArgs<TDetailPrimaryKey>>? ItemInserted;
|
@ -1,4 +1,4 @@
|
||||
namespace Common;
|
||||
namespace Connected.Common;
|
||||
|
||||
public static class Units
|
||||
{
|
@ -4,11 +4,12 @@
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
||||
<RootNamespace>Connected.Common.Notes</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,6 +1,6 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
|
||||
public interface INote : IEntityContainer<long>
|
||||
{
|
@ -1,6 +1,6 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
public interface INoteSearch : IEntityContainer<long>
|
||||
{
|
||||
int Author { get; init; }
|
@ -3,7 +3,7 @@ using Connected.Annotations;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.ServiceModel.Search;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
|
||||
[Service]
|
||||
[ServiceUrl(NoteUrls.Notes)]
|
@ -1,6 +1,6 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
|
||||
public interface INoteText : IPrimaryKey<long>
|
||||
{
|
@ -1,7 +1,7 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
public class NoteArgs : Dto
|
||||
{
|
||||
[Required, MaxLength(128)]
|
@ -1,4 +1,4 @@
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
public static class NoteUrls
|
||||
{
|
||||
public const string Notes = $"{CommonRoutes.Common}/notes";
|
16
Connected.Common.Notes/Connected.Common.Notes.csproj
Normal file
16
Connected.Common.Notes/Connected.Common.Notes.csproj
Normal file
@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\connected.framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Entities\Connected.Entities.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common.Notes.Model\Connected.Common.Notes.Model.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common\Connected.Common.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -2,7 +2,7 @@
|
||||
using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Containers;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
|
||||
[Table(Schema = Constants.CommonSchema)]
|
||||
public sealed record Note : ContainerEntity<long>, INote
|
@ -8,7 +8,7 @@ using Connected.ServiceModel;
|
||||
using Connected.ServiceModel.Search;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
internal static class NoteOps
|
||||
{
|
||||
/// <summary>
|
||||
@ -196,8 +196,8 @@ internal static class NoteOps
|
||||
protected override async Task<ImmutableList<INoteSearch>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Storage.Open<NoteSearch>()
|
||||
where dc.Text.Contains(Arguments.Text)
|
||||
select dc).AsEntities<INoteSearch>();
|
||||
where dc.Text.Contains(Arguments.Text)
|
||||
select dc).AsEntities<INoteSearch>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -213,9 +213,9 @@ internal static class NoteOps
|
||||
protected override async Task<ImmutableList<INoteText>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Storage.Open<NoteText>()
|
||||
where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
|
||||
&& Arguments.IdList.Any(f => f == dc.Id)
|
||||
select dc).AsEntities<INoteText>();
|
||||
where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
|
||||
&& Arguments.IdList.Any(f => f == dc.Id)
|
||||
select dc).AsEntities<INoteText>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -231,10 +231,10 @@ internal static class NoteOps
|
||||
protected override async Task<INoteText?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Provider.Open<NoteText>()
|
||||
where string.Equals(dc.Entity, Arguments.Entity)
|
||||
&& string.Equals(dc.EntityId, Arguments.EntityId)
|
||||
&& dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
where string.Equals(dc.Entity, Arguments.Entity)
|
||||
&& string.Equals(dc.EntityId, Arguments.EntityId)
|
||||
&& dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
}
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Containers;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
[Persistence(Persistence = ColumnPersistence.InMemory)]
|
||||
public record NoteSearch : ContainerEntity<long>, INoteSearch
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.ServiceModel;
|
||||
using Connected.ServiceModel.Search;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
internal sealed class NoteService : Service, INoteService
|
||||
{
|
||||
public NoteService(IContext context) : base(context)
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.ServiceModel.Annotations;
|
||||
using Connected.ServiceModel.Data;
|
||||
|
||||
namespace Common.Notes;
|
||||
namespace Connected.Common.Notes;
|
||||
public sealed record NoteText : TableEntity<long, string>, INoteText
|
||||
{
|
||||
public const string EntityKey = $"{Constants.CommonSchema}.{nameof(NoteText)}";
|
@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Connected.Common.Numbering</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Middleware\Connected.Middleware.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,6 +1,4 @@
|
||||
using Connected;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
/// <summary>
|
||||
/// Provides middleware for providing a numbering algorithm.
|
||||
/// </summary>
|
@ -4,7 +4,7 @@
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<RootNamespace>Common.Numbering</RootNamespace>
|
||||
<RootNamespace>Connected.Common.Numbering</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
@ -1,6 +1,6 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
public interface INumbering : IPrimaryKey<int>
|
||||
{
|
||||
string Entity { get; init; }
|
@ -1,7 +1,7 @@
|
||||
using Connected.Annotations;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
[Service]
|
||||
[ServiceUrl(NumberingUrls.Numbering)]
|
||||
public interface INumberingService
|
@ -1,7 +1,7 @@
|
||||
using Connected.ServiceModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
public sealed class NumberingCalculateArgs : Dto
|
||||
{
|
||||
[Required, MaxLength(128)]
|
@ -1,4 +1,4 @@
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
public static class NumberingUrls
|
||||
{
|
||||
public const string Numbering = "common/numbering";
|
16
Connected.Common.Numbering/Connected.Common.Numbering.csproj
Normal file
16
Connected.Common.Numbering/Connected.Common.Numbering.csproj
Normal file
@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common.Numbering.Middleware\Connected.Common.Numbering.Middleware.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common\Connected.Common.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
@ -1,7 +1,7 @@
|
||||
using Connected.Annotations;
|
||||
using Connected.Middleware;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
|
||||
[Priority(0)]
|
||||
internal sealed class DefaultProvider : MiddlewareComponent, INumberingProvider
|
@ -1,9 +1,9 @@
|
||||
using Connected.Annotations;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Connected.Annotations;
|
||||
using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
[Table(Schema = CommonSchemas.CommonSchema)]
|
||||
internal sealed record Numbering : ConsistentEntity<int>, INumbering
|
||||
{
|
@ -5,7 +5,7 @@ using Connected.Middleware;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
internal sealed class NumberingOps
|
||||
{
|
||||
public sealed class Calculate : ServiceFunction<NumberingCalculateArgs, string>
|
||||
@ -113,8 +113,8 @@ internal sealed class NumberingOps
|
||||
protected override async Task<INumbering?> OnInvoke()
|
||||
{
|
||||
return await (from e in Storage.Open<Numbering>()
|
||||
where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
|
||||
select e).AsEntity();
|
||||
where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
|
||||
select e).AsEntity();
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,8 +130,8 @@ internal sealed class NumberingOps
|
||||
protected override async Task<INumbering?> OnInvoke()
|
||||
{
|
||||
return await (from e in Storage.Open<Numbering>()
|
||||
where e.Id == Arguments.Id
|
||||
select e).AsEntity();
|
||||
where e.Id == Arguments.Id
|
||||
select e).AsEntity();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Ops = Common.Numbering.NumberingOps;
|
||||
using Ops = Connected.Common.Numbering.NumberingOps;
|
||||
|
||||
namespace Common.Numbering;
|
||||
namespace Connected.Common.Numbering;
|
||||
internal sealed class NumberingService : Service, INumberingService
|
||||
{
|
||||
public NumberingService(IContext context) : base(context)
|
@ -5,35 +5,35 @@ VisualStudioVersion = 17.4.32916.344
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "Common\Common.csproj", "{CB582FC6-7A9A-46D1-BA75-4A103E096674}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Globalization", "..\Framework\Connected.Globalization\Connected.Globalization.csproj", "{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Net", "..\Framework\Connected.Net\Connected.Net.csproj", "{664BD509-4D4A-45D4-8B82-5E54094A95E6}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Services", "..\Framework\Connected.Services\Connected.Services.csproj", "{A4616625-88A0-434B-8433-EC8693E1E53B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Validation", "..\Framework\Connected.Validation\Connected.Validation.csproj", "{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common", "Connected.Common\Connected.Common.csproj", "{CB582FC6-7A9A-46D1-BA75-4A103E096674}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Model", "Common.Model\Common.Model.csproj", "{ABF6BF35-ED9F-43A9-8581-23CBD9701E94}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Model", "Connected.Common.Model\Connected.Common.Model.csproj", "{ABF6BF35-ED9F-43A9-8581-23CBD9701E94}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Notes", "Common.Notes\Common.Notes.csproj", "{05B6148F-467C-4090-8FEA-8EA16A4D9956}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Notes", "Connected.Common.Notes\Connected.Common.Notes.csproj", "{05B6148F-467C-4090-8FEA-8EA16A4D9956}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Notes.Model", "Common.Notes.Model\Common.Notes.Model.csproj", "{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Notes.Model", "Connected.Common.Notes.Model\Connected.Common.Notes.Model.csproj", "{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Entities", "..\Framework\Connected.Entities\Connected.Entities.csproj", "{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering.Model", "Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj", "{83F83DE6-28BF-4AB7-902E-42D38A54A578}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.ServiceModel", "..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj", "{3F224810-2034-45BB-BB53-DE5F6E83A07B}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering", "Connected.Common.Numbering\Connected.Common.Numbering.csproj", "{4E810676-E37E-4C25-95FC-747BB32E5A69}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Numbering.Model", "Common.Numbering.Model\Common.Numbering.Model.csproj", "{83F83DE6-28BF-4AB7-902E-42D38A54A578}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering.Middleware", "Connected.Common.Numbering.Middleware\Connected.Common.Numbering.Middleware.csproj", "{424C1CBE-8490-431C-A0A8-1ACB22A65864}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Numbering", "Common.Numbering\Common.Numbering.csproj", "{4E810676-E37E-4C25-95FC-747BB32E5A69}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Entities", "..\connected.framework\Connected.Entities\Connected.Entities.csproj", "{09D6D582-C873-405A-8C33-9E1EFB0483DC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Numbering.Middleware", "Common.Numbering.Middleware\Common.Numbering.Middleware.csproj", "{424C1CBE-8490-431C-A0A8-1ACB22A65864}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Globalization", "..\connected.framework\Connected.Globalization\Connected.Globalization.csproj", "{29AEF348-A405-4744-B797-24C30C0412DE}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Middleware", "..\Framework\Connected.Middleware\Connected.Middleware.csproj", "{085068A9-6739-423D-957F-DFA22564B574}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Middleware", "..\connected.framework\Connected.Middleware\Connected.Middleware.csproj", "{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Net", "..\connected.framework\Connected.Net\Connected.Net.csproj", "{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.ServiceModel", "..\connected.framework.servicemodel\Connected.ServiceModel\Connected.ServiceModel.csproj", "{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Services", "..\connected.framework\Connected.Services\Connected.Services.csproj", "{38FD6047-BEF1-4367-B96E-E7810F0284AD}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Validation", "..\connected.framework\Connected.Validation\Connected.Validation.csproj", "{E4317767-4F21-4E11-B934-9E1E65547D16}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@ -45,22 +45,6 @@ Global
|
||||
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A4616625-88A0-434B-8433-EC8693E1E53B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A4616625-88A0-434B-8433-EC8693E1E53B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A4616625-88A0-434B-8433-EC8693E1E53B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A4616625-88A0-434B-8433-EC8693E1E53B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B2AE8588-0786-4556-9563-0D941A145C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@ -77,14 +61,6 @@ Global
|
||||
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@ -97,23 +73,47 @@ Global
|
||||
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{29AEF348-A405-4744-B797-24C30C0412DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{29AEF348-A405-4744-B797-24C30C0412DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{29AEF348-A405-4744-B797-24C30C0412DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{29AEF348-A405-4744-B797-24C30C0412DE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{E4317767-4F21-4E11-B934-9E1E65547D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E4317767-4F21-4E11-B934-9E1E65547D16}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E4317767-4F21-4E11-B934-9E1E65547D16}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E4317767-4F21-4E11-B934-9E1E65547D16}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{664BD509-4D4A-45D4-8B82-5E54094A95E6} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{A4616625-88A0-434B-8433-EC8693E1E53B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{B2AE8588-0786-4556-9563-0D941A145C7C} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{3F224810-2034-45BB-BB53-DE5F6E83A07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{085068A9-6739-423D-957F-DFA22564B574} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{09D6D582-C873-405A-8C33-9E1EFB0483DC} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{29AEF348-A405-4744-B797-24C30C0412DE} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{38FD6047-BEF1-4367-B96E-E7810F0284AD} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
{E4317767-4F21-4E11-B934-9E1E65547D16} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {23EF0531-5260-4441-876C-7569138BD7FA}
|
@ -2,7 +2,7 @@
|
||||
using Connected.Collections.Queues;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
internal sealed class MessageJob : DispatcherJob<IQueueMessage>
|
||||
{
|
||||
public MessageJob(IContextProvider provider)
|
@ -1,6 +1,6 @@
|
||||
using Connected.Entities.Caching;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
|
||||
internal interface IQueueCache : IEntityCacheClient<QueueMessage, long>
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.Hosting.Workers;
|
||||
using Connected.Middleware;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
internal sealed class QueueClientService : ScheduledWorker
|
||||
{
|
||||
public QueueClientService(IContextProvider provider)
|
@ -4,7 +4,7 @@ using Connected.Data;
|
||||
using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Concurrency;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
/// <inheritdoc cref="IQueueMessage"/>
|
||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||
internal sealed record QueueMessage : ConcurrentEntity<long>, IQueueMessage
|
@ -1,7 +1,7 @@
|
||||
using Connected.Collections.Concurrent;
|
||||
using Connected.Collections.Queues;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
internal sealed class QueueMessageDispatcher : Dispatcher<IQueueMessage, MessageJob>
|
||||
{
|
||||
public QueueMessageDispatcher() : base(128)
|
@ -4,7 +4,7 @@ using Connected.Entities;
|
||||
using Connected.Interop;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
|
||||
internal sealed class QueueOps
|
||||
{
|
||||
@ -61,10 +61,10 @@ internal sealed class QueueOps
|
||||
var targets = new List<QueueMessage>();
|
||||
|
||||
var items = await (from dc in Cache
|
||||
where dc.NextVisible <= DateTime.UtcNow
|
||||
&& dc.Arguments.Options.Expire > DateTime.UtcNow
|
||||
&& Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
|
||||
select dc).AsEntities();
|
||||
where dc.NextVisible <= DateTime.UtcNow
|
||||
&& dc.Arguments.Options.Expire > DateTime.UtcNow
|
||||
&& Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
|
||||
select dc).AsEntities();
|
||||
|
||||
if (!items.Any())
|
||||
return ImmutableList<QueueMessage>.Empty;
|
@ -4,9 +4,9 @@ using Connected.Collections.Queues;
|
||||
using Connected.Net;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Ops = Common.Collections.QueueOps;
|
||||
using Ops = Connected.Common.Collections.QueueOps;
|
||||
|
||||
namespace Common.Collections;
|
||||
namespace Connected.Common.Collections;
|
||||
|
||||
internal sealed class QueueService : DistributedService, IQueueService
|
||||
{
|
@ -1,4 +1,4 @@
|
||||
namespace Common;
|
||||
namespace Connected.Common;
|
||||
public static class CommonSchemas
|
||||
{
|
||||
public const string DocumentSchema = "dcm";
|
37
Connected.Common/CommonStartup.cs
Normal file
37
Connected.Common/CommonStartup.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using Connected.Annotations;
|
||||
using Connected.Common.Documents;
|
||||
using Connected.Common.Globalization;
|
||||
using Connected.Common.Security.Identity;
|
||||
using Connected.Globalization;
|
||||
using Connected.Net.Endpoints;
|
||||
using Connected.Net.Server;
|
||||
using Connected.Security.Identity;
|
||||
using Connected.ServiceModel;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
[assembly: MicroService(MicroServiceType.Service)]
|
||||
|
||||
namespace Connected.Common;
|
||||
|
||||
internal class CommonStartup : Startup
|
||||
{
|
||||
protected override void OnConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddScoped(typeof(IGlobalizationService), typeof(GlobalizationService));
|
||||
services.AddScoped(typeof(IIdentityService), typeof(IdentityService));
|
||||
services.AddTransient(typeof(IDocumentLocker<,>), typeof(DocumentLocker<,>));
|
||||
}
|
||||
|
||||
protected override async Task OnInitialize(Dictionary<string, string> args)
|
||||
{
|
||||
if (Services is null || Services.GetService<IContextProvider>() is not IContextProvider provider)
|
||||
return;
|
||||
|
||||
using var ctx = provider.Create();
|
||||
|
||||
if (ctx.GetService<IEndpointService>() is not IEndpointService endpoints || ctx.GetService<IEndpointServer>() is not IEndpointServer server)
|
||||
return;
|
||||
|
||||
await server.Initialize(await endpoints.Query(), ctx.CancellationToken);
|
||||
}
|
||||
}
|
@ -9,12 +9,12 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
||||
<ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
|
||||
<ProjectReference Include="..\..\Framework\Connected.Globalization\Connected.Globalization.csproj" />
|
||||
<ProjectReference Include="..\..\Framework\Connected.Net\Connected.Net.csproj" />
|
||||
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
|
||||
<ProjectReference Include="..\..\Framework\Connected.Validation\Connected.Validation.csproj" />
|
||||
<ProjectReference Include="..\Common.Model\Common.Model.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework.serviceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Globalization\Connected.Globalization.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Net\Connected.Net.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
|
||||
<ProjectReference Include="..\..\connected.framework\Connected.Validation\Connected.Validation.csproj" />
|
||||
<ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
@ -1,6 +1,6 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common;
|
||||
namespace Connected.Common;
|
||||
|
||||
public static class RecordStatusLocalizer
|
||||
{
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.ServiceModel.Annotations;
|
||||
using Connected.ServiceModel.Data;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
|
||||
[Table(Schema = CommonSchemas.CommonSchema)]
|
||||
internal sealed record DistributedLock : TableEntity<Guid, string>, IDistributedLock
|
@ -1,7 +1,7 @@
|
||||
using Connected.ServiceModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
public sealed class DistributedLockArgs : Dto
|
||||
{
|
||||
[Required, MaxLength(128)]
|
@ -4,7 +4,7 @@ using Connected.Entities.Storage;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
internal sealed class DistributedLockOps
|
||||
{
|
||||
public class Lock : ServiceFunction<DistributedLockArgs, Guid>
|
@ -5,7 +5,7 @@ using Connected.Entities;
|
||||
using Connected.Entities.Storage;
|
||||
using Connected.Middleware;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityProtector<DistributedLock>
|
||||
{
|
||||
public DistributedLockProtector(IStorageProvider storage, ICacheContext cache)
|
||||
@ -52,9 +52,9 @@ internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityPro
|
||||
* must check that anyway
|
||||
*/
|
||||
var entry = await (from dc in Storage.Open<DistributedLock>()
|
||||
where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
|
||||
&& string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
|
||||
select dc).AsEntity();
|
||||
where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
|
||||
&& string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
|
||||
select dc).AsEntity();
|
||||
/*
|
||||
* It exists, we must perform additional checks.
|
||||
*/
|
@ -1,8 +1,8 @@
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Ops = Common.Distributed.DistributedLockOps;
|
||||
using Ops = Connected.Common.Distributed.DistributedLockOps;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
internal sealed class DistributedLockService : DistributedService, IDistributedLockService
|
||||
{
|
||||
public DistributedLockService(IContext context) : base(context)
|
@ -1,6 +1,6 @@
|
||||
using Connected.Data;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
public interface IDistributedLock : IPrimaryKey<Guid>
|
||||
{
|
||||
string Entity { get; init; }
|
@ -1,7 +1,7 @@
|
||||
using Connected.Annotations;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Distributed;
|
||||
namespace Connected.Common.Distributed;
|
||||
|
||||
[Service]
|
||||
public interface IDistributedLockService
|
@ -3,7 +3,7 @@ using Connected.Annotations;
|
||||
using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
/// <summary>
|
||||
/// Default implementation of the <see cref="IDocument{TPrimaryKey}"/> interface.
|
||||
/// </summary>
|
@ -1,7 +1,6 @@
|
||||
using Connected;
|
||||
using Connected.Notifications.Events;
|
||||
using Connected.Notifications.Events;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
public abstract class DocumentListener<TArgs, TDocument, TPrimaryKey> : EventListener<TArgs>
|
||||
where TArgs : IDto
|
||||
where TDocument : IDocument<TPrimaryKey>
|
@ -1,10 +1,9 @@
|
||||
using Common.Distributed;
|
||||
using Connected;
|
||||
using Connected.Common.Distributed;
|
||||
using Connected.Interop;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Threading;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
internal sealed class DocumentLocker<TDocument, TPrimaryKey> : IDocumentLocker<TDocument, TPrimaryKey>
|
||||
where TDocument : IDocument<TPrimaryKey>
|
||||
where TPrimaryKey : notnull
|
@ -2,7 +2,7 @@
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
public abstract class DocumentService<TDocumentPrimaryKey, TItemPrimaryKey> : EntityService<TDocumentPrimaryKey>, IDocumentService<TDocumentPrimaryKey, TItemPrimaryKey>
|
||||
{
|
||||
protected DocumentService(IContext context) : base(context)
|
@ -1,4 +1,4 @@
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
public interface IDocumentLocker<TDocument, TPrimaryKey> : IDisposable
|
||||
where TDocument : IDocument<TPrimaryKey>
|
||||
where TPrimaryKey : notnull
|
@ -2,7 +2,7 @@
|
||||
using Connected.Security.Identity;
|
||||
using Connected.Validation;
|
||||
|
||||
namespace Common.Documents;
|
||||
namespace Connected.Common.Documents;
|
||||
public abstract class InsertDocumentValidator<TDocumentArgs> : MiddlewareComponent, IValidator<TDocumentArgs>
|
||||
where TDocumentArgs : InsertDocumentArgs
|
||||
{
|
@ -1,12 +1,11 @@
|
||||
using System.Globalization;
|
||||
using Connected;
|
||||
using Connected.Data;
|
||||
using Connected.Globalization;
|
||||
using Connected.Globalization.Languages;
|
||||
using Connected.Security.Identity;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Globalization;
|
||||
namespace Connected.Common.Globalization;
|
||||
|
||||
internal class GlobalizationService : IGlobalizationService
|
||||
{
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
using Connected.Globalization.Languages;
|
||||
|
||||
namespace Common.Globalization;
|
||||
namespace Connected.Common.Globalization;
|
||||
|
||||
/// <summary>
|
||||
/// The implementation of the <see cref="ILanguage"/> entity.
|
@ -2,7 +2,7 @@
|
||||
using Connected.Entities.Caching;
|
||||
using Connected.ServiceModel;
|
||||
|
||||
namespace Common.Globalization;
|
||||
namespace Connected.Common.Globalization;
|
||||
|
||||
internal interface ILanguageCache : IEntityCacheClient<Language, int>
|
||||
{
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Immutable;
|
||||
using Connected;
|
||||
using Connected.Entities;
|
||||
using Connected.Entities.Storage;
|
||||
using Connected.Globalization.Languages;
|
||||
@ -7,7 +6,7 @@ using Connected.Notifications.Events;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Globalization;
|
||||
namespace Connected.Common.Globalization;
|
||||
|
||||
/// <summary>
|
||||
/// Queries all <see cref="ILanguage"/> records except those marked as deleting.
|
@ -1,11 +1,11 @@
|
||||
using System.Collections.Immutable;
|
||||
using Common.Security;
|
||||
using Connected.Common.Security;
|
||||
using Connected.Globalization.Languages;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Services.Annotations;
|
||||
|
||||
namespace Common.Globalization;
|
||||
namespace Connected.Common.Globalization;
|
||||
|
||||
/// <summary>
|
||||
/// The implementation of the <see cref="ILanguageService"/> service.
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
using Connected.Net.Endpoints;
|
||||
|
||||
namespace Common.Net;
|
||||
namespace Connected.Common.Net;
|
||||
|
||||
[Table(Schema = SchemaAttribute.DefaultSchema)]
|
||||
internal record Endpoint : ConsistentEntity<int>, IEndpoint
|
@ -1,6 +1,6 @@
|
||||
using Connected.Entities.Caching;
|
||||
|
||||
namespace Common.Net;
|
||||
namespace Connected.Common.Net;
|
||||
|
||||
internal interface IEndpointCache : IEntityCacheClient<Endpoint, int> { }
|
||||
internal class EndpointCache : EntityCacheClient<Endpoint, int>, IEndpointCache
|
@ -1,11 +1,10 @@
|
||||
using System.Collections.Immutable;
|
||||
using Connected;
|
||||
using Connected.Entities;
|
||||
using Connected.Net.Endpoints;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Net;
|
||||
namespace Connected.Common.Net;
|
||||
|
||||
/// <summary>
|
||||
/// Endpoints are singleton but their service is scoped so we must use Isolated database connections for all methods.
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Services.Annotations;
|
||||
|
||||
namespace Common.Net;
|
||||
namespace Connected.Common.Net;
|
||||
|
||||
internal sealed class EndpointService : EntityService<int>, IEndpointService
|
||||
{
|
@ -8,7 +8,7 @@
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Common {
|
||||
namespace Connected.Common {
|
||||
using System;
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@ namespace Common {
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Common.SR", typeof(SR).Assembly);
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Connected.Common.SR", typeof(SR).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
@ -1,4 +1,4 @@
|
||||
namespace Common.Security;
|
||||
namespace Connected.Common.Security;
|
||||
|
||||
public static class CommonClaims
|
||||
{
|
@ -1,7 +1,7 @@
|
||||
using Connected.Security.Identity;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal class IdentityService : IIdentityService
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
using Connected.Security.Identity;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||
internal record Role : ConsistentEntity<int>, IRole
|
@ -1,7 +1,7 @@
|
||||
using Connected.Entities.Caching;
|
||||
using Connected.Security.Identity;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal interface IRoleCache : IEntityCacheClient<Role, int> { }
|
||||
internal sealed class RoleCache : EntityCacheClient<Role, int>, IRoleCache
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Immutable;
|
||||
using Connected;
|
||||
using Connected.Entities;
|
||||
using Connected.Entities.Storage;
|
||||
using Connected.Notifications;
|
||||
@ -9,7 +8,7 @@ using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Validation;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
|
||||
{
|
||||
@ -22,7 +21,7 @@ internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
|
||||
protected override async Task<ImmutableList<IRole>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Cache
|
||||
select dc).AsEntities<IRole>();
|
||||
select dc).AsEntities<IRole>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,8 +36,8 @@ internal sealed class SelectRole : ServiceFunction<PrimaryKeyArgs<int>, IRole?>
|
||||
protected override async Task<IRole?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Cache
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,8 +52,8 @@ internal sealed class SelectRoleByName : ServiceFunction<NameArgs, IRole?>
|
||||
protected override async Task<IRole?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Cache
|
||||
where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
|
||||
select dc).AsEntity();
|
||||
where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
|
||||
select dc).AsEntity();
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,8 +71,8 @@ internal sealed class LookupRoles : ServiceFunction<PrimaryKeyListArgs<int>, Imm
|
||||
return default;
|
||||
|
||||
return await (from dc in Cache
|
||||
where Arguments.IdList.Any(f => f == dc.Id)
|
||||
select dc).AsEntities<IRole>();
|
||||
where Arguments.IdList.Any(f => f == dc.Id)
|
||||
select dc).AsEntities<IRole>();
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Services.Annotations;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal class RoleService : EntityService<int>, IRoleService
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
using Connected.Security.Identity;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||
internal record class User : ConsistentEntity<int>, IUser, IUserPassport
|
@ -1,6 +1,6 @@
|
||||
using Connected.Entities.Caching;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal interface IUserCache : IEntityCacheClient<User, int> { }
|
||||
internal sealed class UserCache : EntityCacheClient<User, int>, IUserCache
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Immutable;
|
||||
using Connected;
|
||||
using Connected.Entities;
|
||||
using Connected.Entities.Storage;
|
||||
using Connected.Notifications.Events;
|
||||
@ -8,7 +7,7 @@ using Connected.Security.Identity;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal sealed class QueryUsers : ServiceFunction<IDto, ImmutableList<IUser>?>
|
||||
{
|
||||
@ -35,8 +34,8 @@ internal sealed class SelectUser : ServiceFunction<PrimaryKeyArgs<int>, IUser?>
|
||||
protected override async Task<IUser?> OnInvoke()
|
||||
{
|
||||
return await (from dc in Cache
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
@ -102,8 +101,8 @@ internal sealed class LookupUsers : ServiceFunction<PrimaryKeyListArgs<int>, Imm
|
||||
return default;
|
||||
|
||||
return await (from dc in Cache
|
||||
where Arguments.IdList.Contains(dc.Id)
|
||||
select dc).AsEntities<IUser>();
|
||||
where Arguments.IdList.Contains(dc.Id)
|
||||
select dc).AsEntities<IUser>();
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Services.Annotations;
|
||||
|
||||
namespace Common.Security.Identity;
|
||||
namespace Connected.Common.Security.Identity;
|
||||
|
||||
internal class UserService : EntityService<int>, IUserService
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.Entities;
|
||||
using Connected.Entities.Annotations;
|
||||
using Connected.Security.Membership;
|
||||
|
||||
namespace Common.Security.Membership;
|
||||
namespace Connected.Common.Security.Membership;
|
||||
|
||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||
internal sealed record Membership : Entity<int>, IMembership
|
@ -1,6 +1,6 @@
|
||||
using Connected.Entities.Caching;
|
||||
|
||||
namespace Common.Security.Membership;
|
||||
namespace Connected.Common.Security.Membership;
|
||||
|
||||
internal interface IMembershipCache : IEntityCacheClient<Membership, int> { }
|
||||
internal class MembershipCache : EntityCacheClient<Membership, int>, IMembershipCache
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Immutable;
|
||||
using Connected;
|
||||
using Connected.Entities;
|
||||
using Connected.Entities.Storage;
|
||||
using Connected.Notifications.Events;
|
||||
@ -7,7 +6,7 @@ using Connected.Security.Membership;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Security.Membership;
|
||||
namespace Connected.Common.Security.Membership;
|
||||
|
||||
internal sealed class DeleteMembership : ServiceAction<PrimaryKeyArgs<int>>
|
||||
{
|
||||
@ -47,7 +46,7 @@ internal sealed class QueryMembership : ServiceFunction<IDto, ImmutableList<IMem
|
||||
protected override async Task<ImmutableList<IMembership>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in MembershipCache
|
||||
select dc).AsEntities<IMembership>();
|
||||
select dc).AsEntities<IMembership>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,9 +61,9 @@ internal sealed class SearchMembership : ServiceFunction<MembershipQueryArgs, Im
|
||||
protected override async Task<ImmutableList<IMembership>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in MembershipCache
|
||||
where (Arguments.User == 0 || (Arguments.User == dc.User))
|
||||
&& (Arguments.Role == 0 || (Arguments.Role == dc.Role))
|
||||
select dc).AsEntities<IMembership>();
|
||||
where (Arguments.User == 0 || (Arguments.User == dc.User))
|
||||
&& (Arguments.Role == 0 || (Arguments.Role == dc.Role))
|
||||
select dc).AsEntities<IMembership>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,8 +78,8 @@ internal sealed class SelectMembership : ServiceFunction<PrimaryKeyArgs<int>, IM
|
||||
protected override async Task<IMembership?> OnInvoke()
|
||||
{
|
||||
return await (from dc in MembershipCache
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Services.Annotations;
|
||||
|
||||
namespace Common.Security.Membership;
|
||||
namespace Connected.Common.Security.Membership;
|
||||
|
||||
internal class MembershipService : EntityService<int>, IMembershipService
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
|
||||
using Connected.Entities.Consistency;
|
||||
using Connected.Security.Permissions;
|
||||
|
||||
namespace Common.Security.Permissions;
|
||||
namespace Connected.Common.Security.Permissions;
|
||||
|
||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||
internal sealed record Permission : ConsistentEntity<int>, IPermission
|
@ -1,6 +1,6 @@
|
||||
using Connected.Entities.Caching;
|
||||
|
||||
namespace Common.Security.Permissions;
|
||||
namespace Connected.Common.Security.Permissions;
|
||||
|
||||
internal interface IPermissionCache : IEntityCacheClient<Permission, int> { }
|
||||
internal class PermissionCache : EntityCacheClient<Permission, int>, IPermissionCache
|
@ -1,5 +1,4 @@
|
||||
using System.Collections.Immutable;
|
||||
using Connected;
|
||||
using Connected.Entities;
|
||||
using Connected.Entities.Storage;
|
||||
using Connected.Notifications.Events;
|
||||
@ -7,7 +6,7 @@ using Connected.Security.Permissions;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Security.Permissions;
|
||||
namespace Connected.Common.Security.Permissions;
|
||||
|
||||
internal sealed class DeletePermission : ServiceAction<PrimaryKeyArgs<int>>
|
||||
{
|
||||
@ -47,7 +46,7 @@ internal sealed class QueryPermissions : ServiceFunction<IDto, ImmutableList<IPe
|
||||
protected override async Task<ImmutableList<IPermission>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in PermissionCache
|
||||
select dc).AsEntities<IPermission>();
|
||||
select dc).AsEntities<IPermission>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,10 +61,10 @@ internal sealed class SearchPermissions : ServiceFunction<PermissionSearchArgs,
|
||||
protected override async Task<ImmutableList<IPermission>?> OnInvoke()
|
||||
{
|
||||
return await (from dc in PermissionCache
|
||||
where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
|
||||
&& (string.IsNullOrEmpty(Arguments.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
|
||||
&& (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
|
||||
select dc).AsEntities<IPermission>();
|
||||
where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
|
||||
&& (string.IsNullOrEmpty(Arguments.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
|
||||
&& (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
|
||||
select dc).AsEntities<IPermission>();
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,8 +79,8 @@ internal sealed class SelectPermission : ServiceFunction<PrimaryKeyArgs<int>, IP
|
||||
protected override async Task<IPermission?> OnInvoke()
|
||||
{
|
||||
return await (from dc in PermissionCache
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
where dc.Id == Arguments.Id
|
||||
select dc).AsEntity();
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
using Connected.Services.Annotations;
|
||||
|
||||
namespace Common.Security.Permissions;
|
||||
namespace Connected.Common.Security.Permissions;
|
||||
|
||||
internal class PermissionService : EntityService<int>, IPermissionService
|
||||
{
|
@ -3,7 +3,7 @@ using Connected.Configuration.Settings;
|
||||
using Connected.ServiceModel;
|
||||
using Connected.Services;
|
||||
|
||||
namespace Common.Settings;
|
||||
namespace Connected.Common.Settings;
|
||||
internal class SettingsService : EntityService<int>, ISettingsService
|
||||
{
|
||||
public SettingsService(IContext context) : base(context)
|
Loading…
x
Reference in New Issue
Block a user