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
|
public static class CommonRoutes
|
||||||
{
|
{
|
@ -5,7 +5,7 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
||||||
<RootNamespace>Common</RootNamespace>
|
<RootNamespace>Connected.Common</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
@ -1,8 +1,8 @@
|
|||||||
using Connected.Annotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Connected.Annotations;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
|
|
||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
|
|
||||||
public class DocumentArgs : Dto
|
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;
|
using Connected.Notifications;
|
||||||
|
|
||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
public interface IDocumentService<TDocumentPrimaryKey, TDetailPrimaryKey> : IServiceNotifications<TDocumentPrimaryKey>
|
public interface IDocumentService<TDocumentPrimaryKey, TDetailPrimaryKey> : IServiceNotifications<TDocumentPrimaryKey>
|
||||||
{
|
{
|
||||||
event ServiceEventHandler<PrimaryKeyEventArgs<TDetailPrimaryKey>>? ItemInserted;
|
event ServiceEventHandler<PrimaryKeyEventArgs<TDetailPrimaryKey>>? ItemInserted;
|
@ -1,4 +1,4 @@
|
|||||||
namespace Common;
|
namespace Connected.Common;
|
||||||
|
|
||||||
public static class Units
|
public static class Units
|
||||||
{
|
{
|
@ -4,11 +4,12 @@
|
|||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
|
<RootNamespace>Connected.Common.Notes</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
||||||
|
<ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
|
|
||||||
public interface INote : IEntityContainer<long>
|
public interface INote : IEntityContainer<long>
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
public interface INoteSearch : IEntityContainer<long>
|
public interface INoteSearch : IEntityContainer<long>
|
||||||
{
|
{
|
||||||
int Author { get; init; }
|
int Author { get; init; }
|
@ -3,7 +3,7 @@ using Connected.Annotations;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.ServiceModel.Search;
|
using Connected.ServiceModel.Search;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
[ServiceUrl(NoteUrls.Notes)]
|
[ServiceUrl(NoteUrls.Notes)]
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
|
|
||||||
public interface INoteText : IPrimaryKey<long>
|
public interface INoteText : IPrimaryKey<long>
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
public class NoteArgs : Dto
|
public class NoteArgs : Dto
|
||||||
{
|
{
|
||||||
[Required, MaxLength(128)]
|
[Required, MaxLength(128)]
|
@ -1,4 +1,4 @@
|
|||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
public static class NoteUrls
|
public static class NoteUrls
|
||||||
{
|
{
|
||||||
public const string Notes = $"{CommonRoutes.Common}/notes";
|
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.Annotations;
|
||||||
using Connected.Entities.Containers;
|
using Connected.Entities.Containers;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
|
|
||||||
[Table(Schema = Constants.CommonSchema)]
|
[Table(Schema = Constants.CommonSchema)]
|
||||||
public sealed record Note : ContainerEntity<long>, INote
|
public sealed record Note : ContainerEntity<long>, INote
|
@ -8,7 +8,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.ServiceModel.Search;
|
using Connected.ServiceModel.Search;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
internal static class NoteOps
|
internal static class NoteOps
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -196,8 +196,8 @@ internal static class NoteOps
|
|||||||
protected override async Task<ImmutableList<INoteSearch>?> OnInvoke()
|
protected override async Task<ImmutableList<INoteSearch>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Storage.Open<NoteSearch>()
|
return await (from dc in Storage.Open<NoteSearch>()
|
||||||
where dc.Text.Contains(Arguments.Text)
|
where dc.Text.Contains(Arguments.Text)
|
||||||
select dc).AsEntities<INoteSearch>();
|
select dc).AsEntities<INoteSearch>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -213,9 +213,9 @@ internal static class NoteOps
|
|||||||
protected override async Task<ImmutableList<INoteText>?> OnInvoke()
|
protected override async Task<ImmutableList<INoteText>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Storage.Open<NoteText>()
|
return await (from dc in Storage.Open<NoteText>()
|
||||||
where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
|
where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
|
||||||
&& Arguments.IdList.Any(f => f == dc.Id)
|
&& Arguments.IdList.Any(f => f == dc.Id)
|
||||||
select dc).AsEntities<INoteText>();
|
select dc).AsEntities<INoteText>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,10 +231,10 @@ internal static class NoteOps
|
|||||||
protected override async Task<INoteText?> OnInvoke()
|
protected override async Task<INoteText?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Provider.Open<NoteText>()
|
return await (from dc in Provider.Open<NoteText>()
|
||||||
where string.Equals(dc.Entity, Arguments.Entity)
|
where string.Equals(dc.Entity, Arguments.Entity)
|
||||||
&& string.Equals(dc.EntityId, Arguments.EntityId)
|
&& string.Equals(dc.EntityId, Arguments.EntityId)
|
||||||
&& dc.Id == Arguments.Id
|
&& dc.Id == Arguments.Id
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,7 +2,7 @@
|
|||||||
using Connected.Entities.Annotations;
|
using Connected.Entities.Annotations;
|
||||||
using Connected.Entities.Containers;
|
using Connected.Entities.Containers;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
[Persistence(Persistence = ColumnPersistence.InMemory)]
|
[Persistence(Persistence = ColumnPersistence.InMemory)]
|
||||||
public record NoteSearch : ContainerEntity<long>, INoteSearch
|
public record NoteSearch : ContainerEntity<long>, INoteSearch
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.ServiceModel.Search;
|
using Connected.ServiceModel.Search;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
internal sealed class NoteService : Service, INoteService
|
internal sealed class NoteService : Service, INoteService
|
||||||
{
|
{
|
||||||
public NoteService(IContext context) : base(context)
|
public NoteService(IContext context) : base(context)
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.ServiceModel.Annotations;
|
using Connected.ServiceModel.Annotations;
|
||||||
using Connected.ServiceModel.Data;
|
using Connected.ServiceModel.Data;
|
||||||
|
|
||||||
namespace Common.Notes;
|
namespace Connected.Common.Notes;
|
||||||
public sealed record NoteText : TableEntity<long, string>, INoteText
|
public sealed record NoteText : TableEntity<long, string>, INoteText
|
||||||
{
|
{
|
||||||
public const string EntityKey = $"{Constants.CommonSchema}.{nameof(NoteText)}";
|
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 Connected.Common.Numbering;
|
||||||
|
|
||||||
namespace Common.Numbering;
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides middleware for providing a numbering algorithm.
|
/// Provides middleware for providing a numbering algorithm.
|
||||||
/// </summary>
|
/// </summary>
|
@ -4,7 +4,7 @@
|
|||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<RootNamespace>Common.Numbering</RootNamespace>
|
<RootNamespace>Connected.Common.Numbering</RootNamespace>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
|
|
||||||
namespace Common.Numbering;
|
namespace Connected.Common.Numbering;
|
||||||
public interface INumbering : IPrimaryKey<int>
|
public interface INumbering : IPrimaryKey<int>
|
||||||
{
|
{
|
||||||
string Entity { get; init; }
|
string Entity { get; init; }
|
@ -1,7 +1,7 @@
|
|||||||
using Connected.Annotations;
|
using Connected.Annotations;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Numbering;
|
namespace Connected.Common.Numbering;
|
||||||
[Service]
|
[Service]
|
||||||
[ServiceUrl(NumberingUrls.Numbering)]
|
[ServiceUrl(NumberingUrls.Numbering)]
|
||||||
public interface INumberingService
|
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
|
public sealed class NumberingCalculateArgs : Dto
|
||||||
{
|
{
|
||||||
[Required, MaxLength(128)]
|
[Required, MaxLength(128)]
|
@ -1,4 +1,4 @@
|
|||||||
namespace Common.Numbering;
|
namespace Connected.Common.Numbering;
|
||||||
public static class NumberingUrls
|
public static class NumberingUrls
|
||||||
{
|
{
|
||||||
public const string Numbering = "common/numbering";
|
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.Annotations;
|
||||||
using Connected.Middleware;
|
using Connected.Middleware;
|
||||||
|
|
||||||
namespace Common.Numbering;
|
namespace Connected.Common.Numbering;
|
||||||
|
|
||||||
[Priority(0)]
|
[Priority(0)]
|
||||||
internal sealed class DefaultProvider : MiddlewareComponent, INumberingProvider
|
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.Annotations;
|
||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
|
|
||||||
namespace Common.Numbering;
|
namespace Connected.Common.Numbering;
|
||||||
[Table(Schema = CommonSchemas.CommonSchema)]
|
[Table(Schema = CommonSchemas.CommonSchema)]
|
||||||
internal sealed record Numbering : ConsistentEntity<int>, INumbering
|
internal sealed record Numbering : ConsistentEntity<int>, INumbering
|
||||||
{
|
{
|
@ -5,7 +5,7 @@ using Connected.Middleware;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Numbering;
|
namespace Connected.Common.Numbering;
|
||||||
internal sealed class NumberingOps
|
internal sealed class NumberingOps
|
||||||
{
|
{
|
||||||
public sealed class Calculate : ServiceFunction<NumberingCalculateArgs, string>
|
public sealed class Calculate : ServiceFunction<NumberingCalculateArgs, string>
|
||||||
@ -113,8 +113,8 @@ internal sealed class NumberingOps
|
|||||||
protected override async Task<INumbering?> OnInvoke()
|
protected override async Task<INumbering?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from e in Storage.Open<Numbering>()
|
return await (from e in Storage.Open<Numbering>()
|
||||||
where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
|
where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
|
||||||
select e).AsEntity();
|
select e).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,8 +130,8 @@ internal sealed class NumberingOps
|
|||||||
protected override async Task<INumbering?> OnInvoke()
|
protected override async Task<INumbering?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from e in Storage.Open<Numbering>()
|
return await (from e in Storage.Open<Numbering>()
|
||||||
where e.Id == Arguments.Id
|
where e.Id == Arguments.Id
|
||||||
select e).AsEntity();
|
select e).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
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
|
internal sealed class NumberingService : Service, INumberingService
|
||||||
{
|
{
|
||||||
public NumberingService(IContext context) : base(context)
|
public NumberingService(IContext context) : base(context)
|
@ -5,35 +5,35 @@ VisualStudioVersion = 17.4.32916.344
|
|||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "Common\Common.csproj", "{CB582FC6-7A9A-46D1-BA75-4A103E096674}"
|
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.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}"
|
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
|
||||||
EndProject
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
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}.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.ActiveCfg = Release|Any CPU
|
||||||
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
|
||||||
{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.Build.0 = 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
|
{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}.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.ActiveCfg = Release|Any CPU
|
||||||
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
|
||||||
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.Build.0 = 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
|
{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}.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.ActiveCfg = Release|Any CPU
|
||||||
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.Build.0 = 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
|
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.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}.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
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
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}
|
{B2AE8588-0786-4556-9563-0D941A145C7C} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||||
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
{09D6D582-C873-405A-8C33-9E1EFB0483DC} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||||
{3F224810-2034-45BB-BB53-DE5F6E83A07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
{29AEF348-A405-4744-B797-24C30C0412DE} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
|
||||||
{085068A9-6739-423D-957F-DFA22564B574} = {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
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {23EF0531-5260-4441-876C-7569138BD7FA}
|
SolutionGuid = {23EF0531-5260-4441-876C-7569138BD7FA}
|
@ -2,7 +2,7 @@
|
|||||||
using Connected.Collections.Queues;
|
using Connected.Collections.Queues;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Collections;
|
namespace Connected.Common.Collections;
|
||||||
internal sealed class MessageJob : DispatcherJob<IQueueMessage>
|
internal sealed class MessageJob : DispatcherJob<IQueueMessage>
|
||||||
{
|
{
|
||||||
public MessageJob(IContextProvider provider)
|
public MessageJob(IContextProvider provider)
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
|
|
||||||
namespace Common.Collections;
|
namespace Connected.Common.Collections;
|
||||||
|
|
||||||
internal interface IQueueCache : IEntityCacheClient<QueueMessage, long>
|
internal interface IQueueCache : IEntityCacheClient<QueueMessage, long>
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.Hosting.Workers;
|
|||||||
using Connected.Middleware;
|
using Connected.Middleware;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Collections;
|
namespace Connected.Common.Collections;
|
||||||
internal sealed class QueueClientService : ScheduledWorker
|
internal sealed class QueueClientService : ScheduledWorker
|
||||||
{
|
{
|
||||||
public QueueClientService(IContextProvider provider)
|
public QueueClientService(IContextProvider provider)
|
@ -4,7 +4,7 @@ using Connected.Data;
|
|||||||
using Connected.Entities.Annotations;
|
using Connected.Entities.Annotations;
|
||||||
using Connected.Entities.Concurrency;
|
using Connected.Entities.Concurrency;
|
||||||
|
|
||||||
namespace Common.Collections;
|
namespace Connected.Common.Collections;
|
||||||
/// <inheritdoc cref="IQueueMessage"/>
|
/// <inheritdoc cref="IQueueMessage"/>
|
||||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||||
internal sealed record QueueMessage : ConcurrentEntity<long>, IQueueMessage
|
internal sealed record QueueMessage : ConcurrentEntity<long>, IQueueMessage
|
@ -1,7 +1,7 @@
|
|||||||
using Connected.Collections.Concurrent;
|
using Connected.Collections.Concurrent;
|
||||||
using Connected.Collections.Queues;
|
using Connected.Collections.Queues;
|
||||||
|
|
||||||
namespace Common.Collections;
|
namespace Connected.Common.Collections;
|
||||||
internal sealed class QueueMessageDispatcher : Dispatcher<IQueueMessage, MessageJob>
|
internal sealed class QueueMessageDispatcher : Dispatcher<IQueueMessage, MessageJob>
|
||||||
{
|
{
|
||||||
public QueueMessageDispatcher() : base(128)
|
public QueueMessageDispatcher() : base(128)
|
@ -4,7 +4,7 @@ using Connected.Entities;
|
|||||||
using Connected.Interop;
|
using Connected.Interop;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Collections;
|
namespace Connected.Common.Collections;
|
||||||
|
|
||||||
internal sealed class QueueOps
|
internal sealed class QueueOps
|
||||||
{
|
{
|
||||||
@ -61,10 +61,10 @@ internal sealed class QueueOps
|
|||||||
var targets = new List<QueueMessage>();
|
var targets = new List<QueueMessage>();
|
||||||
|
|
||||||
var items = await (from dc in Cache
|
var items = await (from dc in Cache
|
||||||
where dc.NextVisible <= DateTime.UtcNow
|
where dc.NextVisible <= DateTime.UtcNow
|
||||||
&& dc.Arguments.Options.Expire > DateTime.UtcNow
|
&& dc.Arguments.Options.Expire > DateTime.UtcNow
|
||||||
&& Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
|
&& Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
|
||||||
select dc).AsEntities();
|
select dc).AsEntities();
|
||||||
|
|
||||||
if (!items.Any())
|
if (!items.Any())
|
||||||
return ImmutableList<QueueMessage>.Empty;
|
return ImmutableList<QueueMessage>.Empty;
|
@ -4,9 +4,9 @@ using Connected.Collections.Queues;
|
|||||||
using Connected.Net;
|
using Connected.Net;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
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
|
internal sealed class QueueService : DistributedService, IQueueService
|
||||||
{
|
{
|
@ -1,4 +1,4 @@
|
|||||||
namespace Common;
|
namespace Connected.Common;
|
||||||
public static class CommonSchemas
|
public static class CommonSchemas
|
||||||
{
|
{
|
||||||
public const string DocumentSchema = "dcm";
|
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>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
|
||||||
<ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
|
<ProjectReference Include="..\..\connected.framework.serviceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
|
||||||
<ProjectReference Include="..\..\Framework\Connected.Globalization\Connected.Globalization.csproj" />
|
<ProjectReference Include="..\..\connected.framework\Connected.Globalization\Connected.Globalization.csproj" />
|
||||||
<ProjectReference Include="..\..\Framework\Connected.Net\Connected.Net.csproj" />
|
<ProjectReference Include="..\..\connected.framework\Connected.Net\Connected.Net.csproj" />
|
||||||
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
|
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
|
||||||
<ProjectReference Include="..\..\Framework\Connected.Validation\Connected.Validation.csproj" />
|
<ProjectReference Include="..\..\connected.framework\Connected.Validation\Connected.Validation.csproj" />
|
||||||
<ProjectReference Include="..\Common.Model\Common.Model.csproj" />
|
<ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
|
|
||||||
namespace Common;
|
namespace Connected.Common;
|
||||||
|
|
||||||
public static class RecordStatusLocalizer
|
public static class RecordStatusLocalizer
|
||||||
{
|
{
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.ServiceModel.Annotations;
|
using Connected.ServiceModel.Annotations;
|
||||||
using Connected.ServiceModel.Data;
|
using Connected.ServiceModel.Data;
|
||||||
|
|
||||||
namespace Common.Distributed;
|
namespace Connected.Common.Distributed;
|
||||||
|
|
||||||
[Table(Schema = CommonSchemas.CommonSchema)]
|
[Table(Schema = CommonSchemas.CommonSchema)]
|
||||||
internal sealed record DistributedLock : TableEntity<Guid, string>, IDistributedLock
|
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
|
public sealed class DistributedLockArgs : Dto
|
||||||
{
|
{
|
||||||
[Required, MaxLength(128)]
|
[Required, MaxLength(128)]
|
@ -4,7 +4,7 @@ using Connected.Entities.Storage;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Distributed;
|
namespace Connected.Common.Distributed;
|
||||||
internal sealed class DistributedLockOps
|
internal sealed class DistributedLockOps
|
||||||
{
|
{
|
||||||
public class Lock : ServiceFunction<DistributedLockArgs, Guid>
|
public class Lock : ServiceFunction<DistributedLockArgs, Guid>
|
@ -5,7 +5,7 @@ using Connected.Entities;
|
|||||||
using Connected.Entities.Storage;
|
using Connected.Entities.Storage;
|
||||||
using Connected.Middleware;
|
using Connected.Middleware;
|
||||||
|
|
||||||
namespace Common.Distributed;
|
namespace Connected.Common.Distributed;
|
||||||
internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityProtector<DistributedLock>
|
internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityProtector<DistributedLock>
|
||||||
{
|
{
|
||||||
public DistributedLockProtector(IStorageProvider storage, ICacheContext cache)
|
public DistributedLockProtector(IStorageProvider storage, ICacheContext cache)
|
||||||
@ -52,9 +52,9 @@ internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityPro
|
|||||||
* must check that anyway
|
* must check that anyway
|
||||||
*/
|
*/
|
||||||
var entry = await (from dc in Storage.Open<DistributedLock>()
|
var entry = await (from dc in Storage.Open<DistributedLock>()
|
||||||
where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
|
where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
|
||||||
&& string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
|
&& string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
/*
|
/*
|
||||||
* It exists, we must perform additional checks.
|
* It exists, we must perform additional checks.
|
||||||
*/
|
*/
|
@ -1,8 +1,8 @@
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
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
|
internal sealed class DistributedLockService : DistributedService, IDistributedLockService
|
||||||
{
|
{
|
||||||
public DistributedLockService(IContext context) : base(context)
|
public DistributedLockService(IContext context) : base(context)
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
|
|
||||||
namespace Common.Distributed;
|
namespace Connected.Common.Distributed;
|
||||||
public interface IDistributedLock : IPrimaryKey<Guid>
|
public interface IDistributedLock : IPrimaryKey<Guid>
|
||||||
{
|
{
|
||||||
string Entity { get; init; }
|
string Entity { get; init; }
|
@ -1,7 +1,7 @@
|
|||||||
using Connected.Annotations;
|
using Connected.Annotations;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Distributed;
|
namespace Connected.Common.Distributed;
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
public interface IDistributedLockService
|
public interface IDistributedLockService
|
@ -3,7 +3,7 @@ using Connected.Annotations;
|
|||||||
using Connected.Entities.Annotations;
|
using Connected.Entities.Annotations;
|
||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
|
|
||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Default implementation of the <see cref="IDocument{TPrimaryKey}"/> interface.
|
/// Default implementation of the <see cref="IDocument{TPrimaryKey}"/> interface.
|
||||||
/// </summary>
|
/// </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>
|
public abstract class DocumentListener<TArgs, TDocument, TPrimaryKey> : EventListener<TArgs>
|
||||||
where TArgs : IDto
|
where TArgs : IDto
|
||||||
where TDocument : IDocument<TPrimaryKey>
|
where TDocument : IDocument<TPrimaryKey>
|
@ -1,10 +1,9 @@
|
|||||||
using Common.Distributed;
|
using Connected.Common.Distributed;
|
||||||
using Connected;
|
|
||||||
using Connected.Interop;
|
using Connected.Interop;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Threading;
|
using Connected.Threading;
|
||||||
|
|
||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
internal sealed class DocumentLocker<TDocument, TPrimaryKey> : IDocumentLocker<TDocument, TPrimaryKey>
|
internal sealed class DocumentLocker<TDocument, TPrimaryKey> : IDocumentLocker<TDocument, TPrimaryKey>
|
||||||
where TDocument : IDocument<TPrimaryKey>
|
where TDocument : IDocument<TPrimaryKey>
|
||||||
where TPrimaryKey : notnull
|
where TPrimaryKey : notnull
|
@ -2,7 +2,7 @@
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
public abstract class DocumentService<TDocumentPrimaryKey, TItemPrimaryKey> : EntityService<TDocumentPrimaryKey>, IDocumentService<TDocumentPrimaryKey, TItemPrimaryKey>
|
public abstract class DocumentService<TDocumentPrimaryKey, TItemPrimaryKey> : EntityService<TDocumentPrimaryKey>, IDocumentService<TDocumentPrimaryKey, TItemPrimaryKey>
|
||||||
{
|
{
|
||||||
protected DocumentService(IContext context) : base(context)
|
protected DocumentService(IContext context) : base(context)
|
@ -1,4 +1,4 @@
|
|||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
public interface IDocumentLocker<TDocument, TPrimaryKey> : IDisposable
|
public interface IDocumentLocker<TDocument, TPrimaryKey> : IDisposable
|
||||||
where TDocument : IDocument<TPrimaryKey>
|
where TDocument : IDocument<TPrimaryKey>
|
||||||
where TPrimaryKey : notnull
|
where TPrimaryKey : notnull
|
@ -2,7 +2,7 @@
|
|||||||
using Connected.Security.Identity;
|
using Connected.Security.Identity;
|
||||||
using Connected.Validation;
|
using Connected.Validation;
|
||||||
|
|
||||||
namespace Common.Documents;
|
namespace Connected.Common.Documents;
|
||||||
public abstract class InsertDocumentValidator<TDocumentArgs> : MiddlewareComponent, IValidator<TDocumentArgs>
|
public abstract class InsertDocumentValidator<TDocumentArgs> : MiddlewareComponent, IValidator<TDocumentArgs>
|
||||||
where TDocumentArgs : InsertDocumentArgs
|
where TDocumentArgs : InsertDocumentArgs
|
||||||
{
|
{
|
@ -1,12 +1,11 @@
|
|||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using Connected;
|
|
||||||
using Connected.Data;
|
using Connected.Data;
|
||||||
using Connected.Globalization;
|
using Connected.Globalization;
|
||||||
using Connected.Globalization.Languages;
|
using Connected.Globalization.Languages;
|
||||||
using Connected.Security.Identity;
|
using Connected.Security.Identity;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Globalization;
|
namespace Connected.Common.Globalization;
|
||||||
|
|
||||||
internal class GlobalizationService : IGlobalizationService
|
internal class GlobalizationService : IGlobalizationService
|
||||||
{
|
{
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
using Connected.Globalization.Languages;
|
using Connected.Globalization.Languages;
|
||||||
|
|
||||||
namespace Common.Globalization;
|
namespace Connected.Common.Globalization;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The implementation of the <see cref="ILanguage"/> entity.
|
/// The implementation of the <see cref="ILanguage"/> entity.
|
@ -2,7 +2,7 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
|
|
||||||
namespace Common.Globalization;
|
namespace Connected.Common.Globalization;
|
||||||
|
|
||||||
internal interface ILanguageCache : IEntityCacheClient<Language, int>
|
internal interface ILanguageCache : IEntityCacheClient<Language, int>
|
||||||
{
|
{
|
@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Connected;
|
|
||||||
using Connected.Entities;
|
using Connected.Entities;
|
||||||
using Connected.Entities.Storage;
|
using Connected.Entities.Storage;
|
||||||
using Connected.Globalization.Languages;
|
using Connected.Globalization.Languages;
|
||||||
@ -7,7 +6,7 @@ using Connected.Notifications.Events;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Globalization;
|
namespace Connected.Common.Globalization;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queries all <see cref="ILanguage"/> records except those marked as deleting.
|
/// Queries all <see cref="ILanguage"/> records except those marked as deleting.
|
@ -1,11 +1,11 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Common.Security;
|
using Connected.Common.Security;
|
||||||
using Connected.Globalization.Languages;
|
using Connected.Globalization.Languages;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
using Connected.Services.Annotations;
|
using Connected.Services.Annotations;
|
||||||
|
|
||||||
namespace Common.Globalization;
|
namespace Connected.Common.Globalization;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The implementation of the <see cref="ILanguageService"/> service.
|
/// The implementation of the <see cref="ILanguageService"/> service.
|
@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
using Connected.Net.Endpoints;
|
using Connected.Net.Endpoints;
|
||||||
|
|
||||||
namespace Common.Net;
|
namespace Connected.Common.Net;
|
||||||
|
|
||||||
[Table(Schema = SchemaAttribute.DefaultSchema)]
|
[Table(Schema = SchemaAttribute.DefaultSchema)]
|
||||||
internal record Endpoint : ConsistentEntity<int>, IEndpoint
|
internal record Endpoint : ConsistentEntity<int>, IEndpoint
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
|
|
||||||
namespace Common.Net;
|
namespace Connected.Common.Net;
|
||||||
|
|
||||||
internal interface IEndpointCache : IEntityCacheClient<Endpoint, int> { }
|
internal interface IEndpointCache : IEntityCacheClient<Endpoint, int> { }
|
||||||
internal class EndpointCache : EntityCacheClient<Endpoint, int>, IEndpointCache
|
internal class EndpointCache : EntityCacheClient<Endpoint, int>, IEndpointCache
|
@ -1,11 +1,10 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Connected;
|
|
||||||
using Connected.Entities;
|
using Connected.Entities;
|
||||||
using Connected.Net.Endpoints;
|
using Connected.Net.Endpoints;
|
||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Net;
|
namespace Connected.Common.Net;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Endpoints are singleton but their service is scoped so we must use Isolated database connections for all methods.
|
/// 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;
|
||||||
using Connected.Services.Annotations;
|
using Connected.Services.Annotations;
|
||||||
|
|
||||||
namespace Common.Net;
|
namespace Connected.Common.Net;
|
||||||
|
|
||||||
internal sealed class EndpointService : EntityService<int>, IEndpointService
|
internal sealed class EndpointService : EntityService<int>, IEndpointService
|
||||||
{
|
{
|
@ -8,7 +8,7 @@
|
|||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace Common {
|
namespace Connected.Common {
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ namespace Common {
|
|||||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
get {
|
get {
|
||||||
if (object.ReferenceEquals(resourceMan, null)) {
|
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;
|
resourceMan = temp;
|
||||||
}
|
}
|
||||||
return resourceMan;
|
return resourceMan;
|
@ -1,4 +1,4 @@
|
|||||||
namespace Common.Security;
|
namespace Connected.Common.Security;
|
||||||
|
|
||||||
public static class CommonClaims
|
public static class CommonClaims
|
||||||
{
|
{
|
@ -1,7 +1,7 @@
|
|||||||
using Connected.Security.Identity;
|
using Connected.Security.Identity;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal class IdentityService : IIdentityService
|
internal class IdentityService : IIdentityService
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
using Connected.Security.Identity;
|
using Connected.Security.Identity;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||||
internal record Role : ConsistentEntity<int>, IRole
|
internal record Role : ConsistentEntity<int>, IRole
|
@ -1,7 +1,7 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
using Connected.Security.Identity;
|
using Connected.Security.Identity;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal interface IRoleCache : IEntityCacheClient<Role, int> { }
|
internal interface IRoleCache : IEntityCacheClient<Role, int> { }
|
||||||
internal sealed class RoleCache : EntityCacheClient<Role, int>, IRoleCache
|
internal sealed class RoleCache : EntityCacheClient<Role, int>, IRoleCache
|
@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Connected;
|
|
||||||
using Connected.Entities;
|
using Connected.Entities;
|
||||||
using Connected.Entities.Storage;
|
using Connected.Entities.Storage;
|
||||||
using Connected.Notifications;
|
using Connected.Notifications;
|
||||||
@ -9,7 +8,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
using Connected.Validation;
|
using Connected.Validation;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
|
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()
|
protected override async Task<ImmutableList<IRole>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Cache
|
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()
|
protected override async Task<IRole?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Cache
|
return await (from dc in Cache
|
||||||
where dc.Id == Arguments.Id
|
where dc.Id == Arguments.Id
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,8 +52,8 @@ internal sealed class SelectRoleByName : ServiceFunction<NameArgs, IRole?>
|
|||||||
protected override async Task<IRole?> OnInvoke()
|
protected override async Task<IRole?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Cache
|
return await (from dc in Cache
|
||||||
where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
|
where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,8 +71,8 @@ internal sealed class LookupRoles : ServiceFunction<PrimaryKeyListArgs<int>, Imm
|
|||||||
return default;
|
return default;
|
||||||
|
|
||||||
return await (from dc in Cache
|
return await (from dc in Cache
|
||||||
where Arguments.IdList.Any(f => f == dc.Id)
|
where Arguments.IdList.Any(f => f == dc.Id)
|
||||||
select dc).AsEntities<IRole>();
|
select dc).AsEntities<IRole>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
using Connected.Services.Annotations;
|
using Connected.Services.Annotations;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal class RoleService : EntityService<int>, IRoleService
|
internal class RoleService : EntityService<int>, IRoleService
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
using Connected.Security.Identity;
|
using Connected.Security.Identity;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||||
internal record class User : ConsistentEntity<int>, IUser, IUserPassport
|
internal record class User : ConsistentEntity<int>, IUser, IUserPassport
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal interface IUserCache : IEntityCacheClient<User, int> { }
|
internal interface IUserCache : IEntityCacheClient<User, int> { }
|
||||||
internal sealed class UserCache : EntityCacheClient<User, int>, IUserCache
|
internal sealed class UserCache : EntityCacheClient<User, int>, IUserCache
|
@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Connected;
|
|
||||||
using Connected.Entities;
|
using Connected.Entities;
|
||||||
using Connected.Entities.Storage;
|
using Connected.Entities.Storage;
|
||||||
using Connected.Notifications.Events;
|
using Connected.Notifications.Events;
|
||||||
@ -8,7 +7,7 @@ using Connected.Security.Identity;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal sealed class QueryUsers : ServiceFunction<IDto, ImmutableList<IUser>?>
|
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()
|
protected override async Task<IUser?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in Cache
|
return await (from dc in Cache
|
||||||
where dc.Id == Arguments.Id
|
where dc.Id == Arguments.Id
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -102,8 +101,8 @@ internal sealed class LookupUsers : ServiceFunction<PrimaryKeyListArgs<int>, Imm
|
|||||||
return default;
|
return default;
|
||||||
|
|
||||||
return await (from dc in Cache
|
return await (from dc in Cache
|
||||||
where Arguments.IdList.Contains(dc.Id)
|
where Arguments.IdList.Contains(dc.Id)
|
||||||
select dc).AsEntities<IUser>();
|
select dc).AsEntities<IUser>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
using Connected.Services.Annotations;
|
using Connected.Services.Annotations;
|
||||||
|
|
||||||
namespace Common.Security.Identity;
|
namespace Connected.Common.Security.Identity;
|
||||||
|
|
||||||
internal class UserService : EntityService<int>, IUserService
|
internal class UserService : EntityService<int>, IUserService
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.Entities;
|
|||||||
using Connected.Entities.Annotations;
|
using Connected.Entities.Annotations;
|
||||||
using Connected.Security.Membership;
|
using Connected.Security.Membership;
|
||||||
|
|
||||||
namespace Common.Security.Membership;
|
namespace Connected.Common.Security.Membership;
|
||||||
|
|
||||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||||
internal sealed record Membership : Entity<int>, IMembership
|
internal sealed record Membership : Entity<int>, IMembership
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
|
|
||||||
namespace Common.Security.Membership;
|
namespace Connected.Common.Security.Membership;
|
||||||
|
|
||||||
internal interface IMembershipCache : IEntityCacheClient<Membership, int> { }
|
internal interface IMembershipCache : IEntityCacheClient<Membership, int> { }
|
||||||
internal class MembershipCache : EntityCacheClient<Membership, int>, IMembershipCache
|
internal class MembershipCache : EntityCacheClient<Membership, int>, IMembershipCache
|
@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Connected;
|
|
||||||
using Connected.Entities;
|
using Connected.Entities;
|
||||||
using Connected.Entities.Storage;
|
using Connected.Entities.Storage;
|
||||||
using Connected.Notifications.Events;
|
using Connected.Notifications.Events;
|
||||||
@ -7,7 +6,7 @@ using Connected.Security.Membership;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Security.Membership;
|
namespace Connected.Common.Security.Membership;
|
||||||
|
|
||||||
internal sealed class DeleteMembership : ServiceAction<PrimaryKeyArgs<int>>
|
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()
|
protected override async Task<ImmutableList<IMembership>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in MembershipCache
|
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()
|
protected override async Task<ImmutableList<IMembership>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in MembershipCache
|
return await (from dc in MembershipCache
|
||||||
where (Arguments.User == 0 || (Arguments.User == dc.User))
|
where (Arguments.User == 0 || (Arguments.User == dc.User))
|
||||||
&& (Arguments.Role == 0 || (Arguments.Role == dc.Role))
|
&& (Arguments.Role == 0 || (Arguments.Role == dc.Role))
|
||||||
select dc).AsEntities<IMembership>();
|
select dc).AsEntities<IMembership>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,8 +78,8 @@ internal sealed class SelectMembership : ServiceFunction<PrimaryKeyArgs<int>, IM
|
|||||||
protected override async Task<IMembership?> OnInvoke()
|
protected override async Task<IMembership?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in MembershipCache
|
return await (from dc in MembershipCache
|
||||||
where dc.Id == Arguments.Id
|
where dc.Id == Arguments.Id
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
using Connected.Services.Annotations;
|
using Connected.Services.Annotations;
|
||||||
|
|
||||||
namespace Common.Security.Membership;
|
namespace Connected.Common.Security.Membership;
|
||||||
|
|
||||||
internal class MembershipService : EntityService<int>, IMembershipService
|
internal class MembershipService : EntityService<int>, IMembershipService
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
|
|||||||
using Connected.Entities.Consistency;
|
using Connected.Entities.Consistency;
|
||||||
using Connected.Security.Permissions;
|
using Connected.Security.Permissions;
|
||||||
|
|
||||||
namespace Common.Security.Permissions;
|
namespace Connected.Common.Security.Permissions;
|
||||||
|
|
||||||
[Table(Schema = SchemaAttribute.SysSchema)]
|
[Table(Schema = SchemaAttribute.SysSchema)]
|
||||||
internal sealed record Permission : ConsistentEntity<int>, IPermission
|
internal sealed record Permission : ConsistentEntity<int>, IPermission
|
@ -1,6 +1,6 @@
|
|||||||
using Connected.Entities.Caching;
|
using Connected.Entities.Caching;
|
||||||
|
|
||||||
namespace Common.Security.Permissions;
|
namespace Connected.Common.Security.Permissions;
|
||||||
|
|
||||||
internal interface IPermissionCache : IEntityCacheClient<Permission, int> { }
|
internal interface IPermissionCache : IEntityCacheClient<Permission, int> { }
|
||||||
internal class PermissionCache : EntityCacheClient<Permission, int>, IPermissionCache
|
internal class PermissionCache : EntityCacheClient<Permission, int>, IPermissionCache
|
@ -1,5 +1,4 @@
|
|||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using Connected;
|
|
||||||
using Connected.Entities;
|
using Connected.Entities;
|
||||||
using Connected.Entities.Storage;
|
using Connected.Entities.Storage;
|
||||||
using Connected.Notifications.Events;
|
using Connected.Notifications.Events;
|
||||||
@ -7,7 +6,7 @@ using Connected.Security.Permissions;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Security.Permissions;
|
namespace Connected.Common.Security.Permissions;
|
||||||
|
|
||||||
internal sealed class DeletePermission : ServiceAction<PrimaryKeyArgs<int>>
|
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()
|
protected override async Task<ImmutableList<IPermission>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in PermissionCache
|
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()
|
protected override async Task<ImmutableList<IPermission>?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in PermissionCache
|
return await (from dc in PermissionCache
|
||||||
where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
|
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.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
|
||||||
&& (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
|
&& (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
|
||||||
select dc).AsEntities<IPermission>();
|
select dc).AsEntities<IPermission>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,8 +79,8 @@ internal sealed class SelectPermission : ServiceFunction<PrimaryKeyArgs<int>, IP
|
|||||||
protected override async Task<IPermission?> OnInvoke()
|
protected override async Task<IPermission?> OnInvoke()
|
||||||
{
|
{
|
||||||
return await (from dc in PermissionCache
|
return await (from dc in PermissionCache
|
||||||
where dc.Id == Arguments.Id
|
where dc.Id == Arguments.Id
|
||||||
select dc).AsEntity();
|
select dc).AsEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,7 @@ using Connected.ServiceModel;
|
|||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
using Connected.Services.Annotations;
|
using Connected.Services.Annotations;
|
||||||
|
|
||||||
namespace Common.Security.Permissions;
|
namespace Connected.Common.Security.Permissions;
|
||||||
|
|
||||||
internal class PermissionService : EntityService<int>, IPermissionService
|
internal class PermissionService : EntityService<int>, IPermissionService
|
||||||
{
|
{
|
@ -3,7 +3,7 @@ using Connected.Configuration.Settings;
|
|||||||
using Connected.ServiceModel;
|
using Connected.ServiceModel;
|
||||||
using Connected.Services;
|
using Connected.Services;
|
||||||
|
|
||||||
namespace Common.Settings;
|
namespace Connected.Common.Settings;
|
||||||
internal class SettingsService : EntityService<int>, ISettingsService
|
internal class SettingsService : EntityService<int>, ISettingsService
|
||||||
{
|
{
|
||||||
public SettingsService(IContext context) : base(context)
|
public SettingsService(IContext context) : base(context)
|
Loading…
x
Reference in New Issue
Block a user