Merge pull request 'Namespace rename' (#2) from NamespaceRenaming into develop

Reviewed-on: http://207.154.223.116:3000/Connected/connected.common/pulls/2
pull/3/head^2
Matija Koželj 2 years ago
commit 821b90f1ab

@ -0,0 +1,226 @@
# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true
# C# files
[*.cs]
#### Core EditorConfig Options ####
# Indentation and spacing
indent_size = 4
indent_style = tab
tab_width = 4
# New line preferences
end_of_line = crlf
insert_final_newline = false
#### .NET Coding Conventions ####
# Organize usings
dotnet_separate_import_directive_groups = false
dotnet_sort_system_directives_first = true
file_header_template = unset
# this. and Me. preferences
dotnet_style_qualification_for_event = false
dotnet_style_qualification_for_field = false
dotnet_style_qualification_for_method = false
dotnet_style_qualification_for_property = false
# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members = true
dotnet_style_predefined_type_for_member_access = true
# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
dotnet_style_parentheses_in_other_operators = never_if_unnecessary
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
# Modifier preferences
dotnet_style_require_accessibility_modifiers = for_non_interface_members
# Expression-level preferences
dotnet_style_coalesce_expression = true
dotnet_style_collection_initializer = true
dotnet_style_explicit_tuple_names = true
dotnet_style_namespace_match_folder = true
dotnet_style_null_propagation = true
dotnet_style_object_initializer = true
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true
dotnet_style_prefer_compound_assignment = true
dotnet_style_prefer_conditional_expression_over_assignment = true
dotnet_style_prefer_conditional_expression_over_return = true
dotnet_style_prefer_foreach_explicit_cast_in_source = when_strongly_typed
dotnet_style_prefer_inferred_anonymous_type_member_names = true
dotnet_style_prefer_inferred_tuple_names = true
dotnet_style_prefer_is_null_check_over_reference_equality_method = true
dotnet_style_prefer_simplified_boolean_expressions = true
dotnet_style_prefer_simplified_interpolation = true
# Field preferences
dotnet_style_readonly_field = true
# Parameter preferences
dotnet_code_quality_unused_parameters = all
# Suppression preferences
dotnet_remove_unnecessary_suppression_exclusions = none
# New line preferences
dotnet_style_allow_multiple_blank_lines_experimental = false
dotnet_style_allow_statement_immediately_after_block_experimental = false
#### C# Coding Conventions ####
# var preferences
csharp_style_var_elsewhere = true
csharp_style_var_for_built_in_types = true
csharp_style_var_when_type_is_apparent = true
# Expression-bodied members
csharp_style_expression_bodied_accessors = true
csharp_style_expression_bodied_constructors = false
csharp_style_expression_bodied_indexers = true
csharp_style_expression_bodied_lambdas = true
csharp_style_expression_bodied_local_functions = false
csharp_style_expression_bodied_methods = false
csharp_style_expression_bodied_operators = false
csharp_style_expression_bodied_properties = true
# Pattern matching preferences
csharp_style_pattern_matching_over_as_with_null_check = true
csharp_style_pattern_matching_over_is_with_cast_check = true
csharp_style_prefer_extended_property_pattern = true
csharp_style_prefer_not_pattern = true
csharp_style_prefer_pattern_matching = true
csharp_style_prefer_switch_expression = true
# Null-checking preferences
csharp_style_conditional_delegate_call = true
# Modifier preferences
csharp_prefer_static_local_function = true
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async
csharp_style_prefer_readonly_struct = true
# Code-block preferences
csharp_prefer_braces = when_multiline
csharp_prefer_simple_using_statement = true
csharp_style_namespace_declarations = file_scoped
csharp_style_prefer_method_group_conversion = true
csharp_style_prefer_top_level_statements = true
# Expression-level preferences
csharp_prefer_simple_default_expression = true
csharp_style_deconstructed_variable_declaration = true
csharp_style_implicit_object_creation_when_type_is_apparent = true
csharp_style_inlined_variable_declaration = true
csharp_style_prefer_index_operator = true
csharp_style_prefer_local_over_anonymous_function = true
csharp_style_prefer_null_check_over_type_check = true
csharp_style_prefer_range_operator = true
csharp_style_prefer_tuple_swap = true
csharp_style_prefer_utf8_string_literals = true
csharp_style_throw_expression = true
csharp_style_unused_value_assignment_preference = discard_variable
csharp_style_unused_value_expression_statement_preference = discard_variable
# 'using' directive preferences
csharp_using_directive_placement = outside_namespace
# New line preferences
csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
csharp_style_allow_blank_lines_between_consecutive_braces_experimental = false
csharp_style_allow_embedded_statements_on_same_line_experimental = false
#### C# Formatting Rules ####
# New line preferences
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true
# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true
# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
# Wrapping preferences
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = false
#### Naming styles ####
# Naming rules
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
# Naming styles
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case

@ -1,42 +0,0 @@
using Connected.Data;
namespace Common.Documents
{
/// <summary>
/// Represents the base entity for all documents.
/// </summary>
/// <remarks>
/// Document is primary entity of the business processes. It provides
/// schema which is used in a business process lifecycle. Documents, apart from
/// some basic validation, do not provide any specifiec business logic. Business
/// processes are entirely responsible for the business logic.
/// </remarks>
public interface IDocument<TPrimaryKey> : IPrimaryKey<TPrimaryKey>
where TPrimaryKey : notnull
{
/// <summary>
/// The date when document was created.
/// </summary>
DateTimeOffset Created { get; init; }
/// <summary>
/// The date when document was last updated.
/// </summary>
DateTimeOffset? Modified { get; init; }
/// <summary>
/// The unique identifier of the document. This is
/// usually set by a customer specific numbering system.
/// </summary>
string? Code { get; init; }
/// <summary>
/// The user which created the document. Can be null if document was created by the system.
/// </summary>
int? Author { get; init; }
/// <summary>
/// The user last modified the document. Once user modifies the document it becomes the Owner.
/// </summary>
/// <remarks>
/// This behavior could be overriden in documents implementation.
/// </remarks>
int? Owner { get; init; }
}
}

@ -1,15 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Common.Notes</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
<ProjectReference Include="..\Common.Model\Common.Model.csproj" />
</ItemGroup>
</Project>

@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
<ProjectReference Include="..\..\Framework\Connected.Entities\Connected.Entities.csproj" />
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
<ProjectReference Include="..\Common.Notes.Model\Common.Notes.Model.csproj" />
<ProjectReference Include="..\Common\Common.csproj" />
</ItemGroup>
</Project>

@ -1,15 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Common.Numbering</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Framework\Connected.Middleware\Connected.Middleware.csproj" />
<ProjectReference Include="..\Common.Numbering.Model\Common.Numbering.Model.csproj" />
</ItemGroup>
</Project>

@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
<ProjectReference Include="..\Common.Numbering.Middleware\Common.Numbering.Middleware.csproj" />
<ProjectReference Include="..\Common.Numbering.Model\Common.Numbering.Model.csproj" />
<ProjectReference Include="..\Common\Common.csproj" />
</ItemGroup>
</Project>

@ -1,39 +0,0 @@
using Common.Documents;
using Common.Globalization;
using Common.Security.Identity;
using Connected;
using Connected.Annotations;
using Connected.Globalization;
using Connected.Net.Endpoints;
using Connected.Net.Server;
using Connected.Security.Identity;
using Connected.ServiceModel;
using Microsoft.Extensions.DependencyInjection;
[assembly: MicroService(MicroServiceType.Service)]
namespace Common
{
internal class CommonStartup : Startup
{
protected override void OnConfigureServices(IServiceCollection services)
{
services.AddScoped(typeof(IGlobalizationService), typeof(GlobalizationService));
services.AddScoped(typeof(IIdentityService), typeof(IdentityService));
services.AddTransient(typeof(IDocumentLocker<,>), typeof(DocumentLocker<,>));
}
protected override async Task OnInitialize(Dictionary<string, string> args)
{
if (Services is null || Services.GetService<IContextProvider>() is not IContextProvider provider)
return;
using var ctx = provider.Create();
if (ctx.GetService<IEndpointService>() is not IEndpointService endpoints || ctx.GetService<IEndpointServer>() is not IEndpointServer server)
return;
await server.Initialize(await endpoints.Query(), ctx.CancellationToken);
}
}
}

@ -1,4 +1,4 @@
namespace Common;
namespace Connected.Common;
public static class CommonRoutes
{

@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
<RootNamespace>Common</RootNamespace>
<RootNamespace>Connected.Common</RootNamespace>
</PropertyGroup>
<ItemGroup>

@ -1,8 +1,8 @@
using Connected.Annotations;
using System.ComponentModel.DataAnnotations;
using Connected.Annotations;
using Connected.ServiceModel;
using System.ComponentModel.DataAnnotations;
namespace Common.Documents;
namespace Connected.Common.Documents;
public class DocumentArgs : Dto
{

@ -0,0 +1,41 @@
using Connected.Data;
namespace Connected.Common.Documents;
/// <summary>
/// Represents the base entity for all documents.
/// </summary>
/// <remarks>
/// Document is primary entity of the business processes. It provides
/// schema which is used in a business process lifecycle. Documents, apart from
/// some basic validation, do not provide any specifiec business logic. Business
/// processes are entirely responsible for the business logic.
/// </remarks>
public interface IDocument<TPrimaryKey> : IPrimaryKey<TPrimaryKey>
where TPrimaryKey : notnull
{
/// <summary>
/// The date when document was created.
/// </summary>
DateTimeOffset Created { get; init; }
/// <summary>
/// The date when document was last updated.
/// </summary>
DateTimeOffset? Modified { get; init; }
/// <summary>
/// The unique identifier of the document. This is
/// usually set by a customer specific numbering system.
/// </summary>
string? Code { get; init; }
/// <summary>
/// The user which created the document. Can be null if document was created by the system.
/// </summary>
int? Author { get; init; }
/// <summary>
/// The user last modified the document. Once user modifies the document it becomes the Owner.
/// </summary>
/// <remarks>
/// This behavior could be overriden in documents implementation.
/// </remarks>
int? Owner { get; init; }
}

@ -1,6 +1,6 @@
using Connected.Notifications;
namespace Common.Documents;
namespace Connected.Common.Documents;
public interface IDocumentService<TDocumentPrimaryKey, TDetailPrimaryKey> : IServiceNotifications<TDocumentPrimaryKey>
{
event ServiceEventHandler<PrimaryKeyEventArgs<TDetailPrimaryKey>>? ItemInserted;

@ -1,4 +1,4 @@
namespace Common;
namespace Connected.Common;
public static class Units
{

@ -4,11 +4,12 @@
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>$(MSBuildProjectName)</AssemblyName>
<RootNamespace>Connected.Common.Notes</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
<ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
</ItemGroup>
</Project>

@ -1,6 +1,6 @@
using Connected.Data;
namespace Common.Notes;
namespace Connected.Common.Notes;
public interface INote : IEntityContainer<long>
{

@ -1,6 +1,6 @@
using Connected.Data;
namespace Common.Notes;
namespace Connected.Common.Notes;
public interface INoteSearch : IEntityContainer<long>
{
int Author { get; init; }

@ -3,7 +3,7 @@ using Connected.Annotations;
using Connected.ServiceModel;
using Connected.ServiceModel.Search;
namespace Common.Notes;
namespace Connected.Common.Notes;
[Service]
[ServiceUrl(NoteUrls.Notes)]

@ -1,6 +1,6 @@
using Connected.Data;
namespace Common.Notes;
namespace Connected.Common.Notes;
public interface INoteText : IPrimaryKey<long>
{

@ -1,7 +1,7 @@
using System.ComponentModel.DataAnnotations;
using Connected.ServiceModel;
namespace Common.Notes;
namespace Connected.Common.Notes;
public class NoteArgs : Dto
{
[Required, MaxLength(128)]

@ -1,4 +1,4 @@
namespace Common.Notes;
namespace Connected.Common.Notes;
public static class NoteUrls
{
public const string Notes = $"{CommonRoutes.Common}/notes";

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\connected.framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
<ProjectReference Include="..\..\connected.framework\Connected.Entities\Connected.Entities.csproj" />
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
<ProjectReference Include="..\Connected.Common.Notes.Model\Connected.Common.Notes.Model.csproj" />
<ProjectReference Include="..\Connected.Common\Connected.Common.csproj" />
</ItemGroup>
</Project>

@ -2,7 +2,7 @@
using Connected.Entities.Annotations;
using Connected.Entities.Containers;
namespace Common.Notes;
namespace Connected.Common.Notes;
[Table(Schema = Constants.CommonSchema)]
public sealed record Note : ContainerEntity<long>, INote

@ -8,7 +8,7 @@ using Connected.ServiceModel;
using Connected.ServiceModel.Search;
using Connected.Services;
namespace Common.Notes;
namespace Connected.Common.Notes;
internal static class NoteOps
{
/// <summary>
@ -196,8 +196,8 @@ internal static class NoteOps
protected override async Task<ImmutableList<INoteSearch>?> OnInvoke()
{
return await (from dc in Storage.Open<NoteSearch>()
where dc.Text.Contains(Arguments.Text)
select dc).AsEntities<INoteSearch>();
where dc.Text.Contains(Arguments.Text)
select dc).AsEntities<INoteSearch>();
}
}
@ -213,9 +213,9 @@ internal static class NoteOps
protected override async Task<ImmutableList<INoteText>?> OnInvoke()
{
return await (from dc in Storage.Open<NoteText>()
where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
&& Arguments.IdList.Any(f => f == dc.Id)
select dc).AsEntities<INoteText>();
where string.Equals(dc.Entity, Arguments.Entity, StringComparison.Ordinal)
&& Arguments.IdList.Any(f => f == dc.Id)
select dc).AsEntities<INoteText>();
}
}
@ -231,10 +231,10 @@ internal static class NoteOps
protected override async Task<INoteText?> OnInvoke()
{
return await (from dc in Provider.Open<NoteText>()
where string.Equals(dc.Entity, Arguments.Entity)
&& string.Equals(dc.EntityId, Arguments.EntityId)
&& dc.Id == Arguments.Id
select dc).AsEntity();
where string.Equals(dc.Entity, Arguments.Entity)
&& string.Equals(dc.EntityId, Arguments.EntityId)
&& dc.Id == Arguments.Id
select dc).AsEntity();
}
}
}

@ -2,7 +2,7 @@
using Connected.Entities.Annotations;
using Connected.Entities.Containers;
namespace Common.Notes;
namespace Connected.Common.Notes;
[Persistence(Persistence = ColumnPersistence.InMemory)]
public record NoteSearch : ContainerEntity<long>, INoteSearch
{

@ -3,7 +3,7 @@ using Connected.ServiceModel;
using Connected.ServiceModel.Search;
using Connected.Services;
namespace Common.Notes;
namespace Connected.Common.Notes;
internal sealed class NoteService : Service, INoteService
{
public NoteService(IContext context) : base(context)

@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
using Connected.ServiceModel.Annotations;
using Connected.ServiceModel.Data;
namespace Common.Notes;
namespace Connected.Common.Notes;
public sealed record NoteText : TableEntity<long, string>, INoteText
{
public const string EntityKey = $"{Constants.CommonSchema}.{nameof(NoteText)}";

@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Connected.Common.Numbering</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\connected.framework\Connected.Middleware\Connected.Middleware.csproj" />
<ProjectReference Include="..\Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj" />
</ItemGroup>
</Project>

@ -1,6 +1,4 @@
using Connected;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
/// <summary>
/// Provides middleware for providing a numbering algorithm.
/// </summary>

@ -4,7 +4,7 @@
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<RootNamespace>Common.Numbering</RootNamespace>
<RootNamespace>Connected.Common.Numbering</RootNamespace>
</PropertyGroup>
<ItemGroup>

@ -1,6 +1,6 @@
using Connected.Data;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
public interface INumbering : IPrimaryKey<int>
{
string Entity { get; init; }

@ -1,7 +1,7 @@
using Connected.Annotations;
using Connected.ServiceModel;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
[Service]
[ServiceUrl(NumberingUrls.Numbering)]
public interface INumberingService

@ -1,7 +1,7 @@
using Connected.ServiceModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using Connected.ServiceModel;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
public sealed class NumberingCalculateArgs : Dto
{
[Required, MaxLength(128)]

@ -1,4 +1,4 @@
namespace Common.Numbering;
namespace Connected.Common.Numbering;
public static class NumberingUrls
{
public const string Numbering = "common/numbering";

@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
<ProjectReference Include="..\Connected.Common.Numbering.Middleware\Connected.Common.Numbering.Middleware.csproj" />
<ProjectReference Include="..\Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj" />
<ProjectReference Include="..\Connected.Common\Connected.Common.csproj" />
</ItemGroup>
</Project>

@ -1,7 +1,7 @@
using Connected.Annotations;
using Connected.Middleware;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
[Priority(0)]
internal sealed class DefaultProvider : MiddlewareComponent, INumberingProvider

@ -1,9 +1,9 @@
using Connected.Annotations;
using System.ComponentModel.DataAnnotations;
using Connected.Annotations;
using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
using System.ComponentModel.DataAnnotations;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
[Table(Schema = CommonSchemas.CommonSchema)]
internal sealed record Numbering : ConsistentEntity<int>, INumbering
{

@ -5,7 +5,7 @@ using Connected.Middleware;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
internal sealed class NumberingOps
{
public sealed class Calculate : ServiceFunction<NumberingCalculateArgs, string>
@ -113,8 +113,8 @@ internal sealed class NumberingOps
protected override async Task<INumbering?> OnInvoke()
{
return await (from e in Storage.Open<Numbering>()
where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
select e).AsEntity();
where string.Equals(e.Entity, Arguments.Entity, StringComparison.OrdinalIgnoreCase)
select e).AsEntity();
}
}
@ -130,8 +130,8 @@ internal sealed class NumberingOps
protected override async Task<INumbering?> OnInvoke()
{
return await (from e in Storage.Open<Numbering>()
where e.Id == Arguments.Id
select e).AsEntity();
where e.Id == Arguments.Id
select e).AsEntity();
}
}
}

@ -1,8 +1,8 @@
using Connected.ServiceModel;
using Connected.Services;
using Ops = Common.Numbering.NumberingOps;
using Ops = Connected.Common.Numbering.NumberingOps;
namespace Common.Numbering;
namespace Connected.Common.Numbering;
internal sealed class NumberingService : Service, INumberingService
{
public NumberingService(IContext context) : base(context)

@ -5,35 +5,35 @@ VisualStudioVersion = 17.4.32916.344
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Dependencies", "Dependencies", "{75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "Common\Common.csproj", "{CB582FC6-7A9A-46D1-BA75-4A103E096674}"
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}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Net", "..\Framework\Connected.Net\Connected.Net.csproj", "{664BD509-4D4A-45D4-8B82-5E54094A95E6}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Model", "Connected.Common.Model\Connected.Common.Model.csproj", "{ABF6BF35-ED9F-43A9-8581-23CBD9701E94}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Services", "..\Framework\Connected.Services\Connected.Services.csproj", "{A4616625-88A0-434B-8433-EC8693E1E53B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Notes", "Connected.Common.Notes\Connected.Common.Notes.csproj", "{05B6148F-467C-4090-8FEA-8EA16A4D9956}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Validation", "..\Framework\Connected.Validation\Connected.Validation.csproj", "{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Notes.Model", "Connected.Common.Notes.Model\Connected.Common.Notes.Model.csproj", "{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected", "..\Connected\Connected\Connected.csproj", "{B2AE8588-0786-4556-9563-0D941A145C7C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering.Model", "Connected.Common.Numbering.Model\Connected.Common.Numbering.Model.csproj", "{83F83DE6-28BF-4AB7-902E-42D38A54A578}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common.Model", "Common.Model\Common.Model.csproj", "{ABF6BF35-ED9F-43A9-8581-23CBD9701E94}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Connected.Common.Numbering", "Connected.Common.Numbering\Connected.Common.Numbering.csproj", "{4E810676-E37E-4C25-95FC-747BB32E5A69}"
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.Numbering.Middleware", "Connected.Common.Numbering.Middleware\Connected.Common.Numbering.Middleware.csproj", "{424C1CBE-8490-431C-A0A8-1ACB22A65864}"
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.Entities", "..\connected.framework\Connected.Entities\Connected.Entities.csproj", "{09D6D582-C873-405A-8C33-9E1EFB0483DC}"
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.Globalization", "..\connected.framework\Connected.Globalization\Connected.Globalization.csproj", "{29AEF348-A405-4744-B797-24C30C0412DE}"
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.Middleware", "..\connected.framework\Connected.Middleware\Connected.Middleware.csproj", "{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}"
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.Net", "..\connected.framework\Connected.Net\Connected.Net.csproj", "{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}"
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.ServiceModel", "..\connected.framework.servicemodel\Connected.ServiceModel\Connected.ServiceModel.csproj", "{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}"
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.Services", "..\connected.framework\Connected.Services\Connected.Services.csproj", "{38FD6047-BEF1-4367-B96E-E7810F0284AD}"
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.Validation", "..\connected.framework\Connected.Validation\Connected.Validation.csproj", "{E4317767-4F21-4E11-B934-9E1E65547D16}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -45,22 +45,6 @@ Global
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB582FC6-7A9A-46D1-BA75-4A103E096674}.Release|Any CPU.Build.0 = Release|Any CPU
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB}.Release|Any CPU.Build.0 = Release|Any CPU
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{664BD509-4D4A-45D4-8B82-5E54094A95E6}.Release|Any CPU.Build.0 = Release|Any CPU
{A4616625-88A0-434B-8433-EC8693E1E53B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4616625-88A0-434B-8433-EC8693E1E53B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4616625-88A0-434B-8433-EC8693E1E53B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4616625-88A0-434B-8433-EC8693E1E53B}.Release|Any CPU.Build.0 = Release|Any CPU
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7}.Release|Any CPU.Build.0 = Release|Any CPU
{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2AE8588-0786-4556-9563-0D941A145C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2AE8588-0786-4556-9563-0D941A145C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -77,14 +61,6 @@ Global
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF77BAAB-8223-4BEA-B7BA-0C087D9C6750}.Release|Any CPU.Build.0 = Release|Any CPU
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42}.Release|Any CPU.Build.0 = Release|Any CPU
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3F224810-2034-45BB-BB53-DE5F6E83A07B}.Release|Any CPU.Build.0 = Release|Any CPU
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83F83DE6-28BF-4AB7-902E-42D38A54A578}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -97,23 +73,47 @@ Global
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Debug|Any CPU.Build.0 = Debug|Any CPU
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.ActiveCfg = Release|Any CPU
{424C1CBE-8490-431C-A0A8-1ACB22A65864}.Release|Any CPU.Build.0 = Release|Any CPU
{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{085068A9-6739-423D-957F-DFA22564B574}.Debug|Any CPU.Build.0 = Debug|Any CPU
{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.ActiveCfg = Release|Any CPU
{085068A9-6739-423D-957F-DFA22564B574}.Release|Any CPU.Build.0 = Release|Any CPU
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09D6D582-C873-405A-8C33-9E1EFB0483DC}.Release|Any CPU.Build.0 = Release|Any CPU
{29AEF348-A405-4744-B797-24C30C0412DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{29AEF348-A405-4744-B797-24C30C0412DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{29AEF348-A405-4744-B797-24C30C0412DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{29AEF348-A405-4744-B797-24C30C0412DE}.Release|Any CPU.Build.0 = Release|Any CPU
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B}.Release|Any CPU.Build.0 = Release|Any CPU
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E}.Release|Any CPU.Build.0 = Release|Any CPU
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42}.Release|Any CPU.Build.0 = Release|Any CPU
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38FD6047-BEF1-4367-B96E-E7810F0284AD}.Release|Any CPU.Build.0 = Release|Any CPU
{E4317767-4F21-4E11-B934-9E1E65547D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4317767-4F21-4E11-B934-9E1E65547D16}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E4317767-4F21-4E11-B934-9E1E65547D16}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4317767-4F21-4E11-B934-9E1E65547D16}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{B9438432-CD2B-4570-B96C-C1B47A1CF5BB} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{664BD509-4D4A-45D4-8B82-5E54094A95E6} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{A4616625-88A0-434B-8433-EC8693E1E53B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{71403C62-2D04-4E0B-9FAB-1ED23B0FB6B7} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{B2AE8588-0786-4556-9563-0D941A145C7C} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{0D2BE8CB-1C1B-4C74-9940-8F1BA5B1ED42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{3F224810-2034-45BB-BB53-DE5F6E83A07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{085068A9-6739-423D-957F-DFA22564B574} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{09D6D582-C873-405A-8C33-9E1EFB0483DC} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{29AEF348-A405-4744-B797-24C30C0412DE} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{5D042895-A9FC-4BEE-8EF8-7EFDD54DB07B} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{FFCDE448-E330-42E2-A619-8BC9EC0FDC1E} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{FE160CA1-0E4F-41F9-BD7F-C344C6F54B42} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{38FD6047-BEF1-4367-B96E-E7810F0284AD} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
{E4317767-4F21-4E11-B934-9E1E65547D16} = {75ED46E6-38CD-4948-9F3C-5167A9FFD7FA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {23EF0531-5260-4441-876C-7569138BD7FA}

@ -2,7 +2,7 @@
using Connected.Collections.Queues;
using Connected.ServiceModel;
namespace Common.Collections;
namespace Connected.Common.Collections;
internal sealed class MessageJob : DispatcherJob<IQueueMessage>
{
public MessageJob(IContextProvider provider)

@ -1,6 +1,6 @@
using Connected.Entities.Caching;
namespace Common.Collections;
namespace Connected.Common.Collections;
internal interface IQueueCache : IEntityCacheClient<QueueMessage, long>
{

@ -3,7 +3,7 @@ using Connected.Hosting.Workers;
using Connected.Middleware;
using Connected.ServiceModel;
namespace Common.Collections;
namespace Connected.Common.Collections;
internal sealed class QueueClientService : ScheduledWorker
{
public QueueClientService(IContextProvider provider)

@ -4,7 +4,7 @@ using Connected.Data;
using Connected.Entities.Annotations;
using Connected.Entities.Concurrency;
namespace Common.Collections;
namespace Connected.Common.Collections;
/// <inheritdoc cref="IQueueMessage"/>
[Table(Schema = SchemaAttribute.SysSchema)]
internal sealed record QueueMessage : ConcurrentEntity<long>, IQueueMessage

@ -1,7 +1,7 @@
using Connected.Collections.Concurrent;
using Connected.Collections.Queues;
namespace Common.Collections;
namespace Connected.Common.Collections;
internal sealed class QueueMessageDispatcher : Dispatcher<IQueueMessage, MessageJob>
{
public QueueMessageDispatcher() : base(128)

@ -4,7 +4,7 @@ using Connected.Entities;
using Connected.Interop;
using Connected.Services;
namespace Common.Collections;
namespace Connected.Common.Collections;
internal sealed class QueueOps
{
@ -61,10 +61,10 @@ internal sealed class QueueOps
var targets = new List<QueueMessage>();
var items = await (from dc in Cache
where dc.NextVisible <= DateTime.UtcNow
&& dc.Arguments.Options.Expire > DateTime.UtcNow
&& Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
select dc).AsEntities();
where dc.NextVisible <= DateTime.UtcNow
&& dc.Arguments.Options.Expire > DateTime.UtcNow
&& Arguments.Queues.Any(f => string.Equals(f, dc.Queue, StringComparison.OrdinalIgnoreCase))
select dc).AsEntities();
if (!items.Any())
return ImmutableList<QueueMessage>.Empty;

@ -4,9 +4,9 @@ using Connected.Collections.Queues;
using Connected.Net;
using Connected.ServiceModel;
using Connected.Services;
using Ops = Common.Collections.QueueOps;
using Ops = Connected.Common.Collections.QueueOps;
namespace Common.Collections;
namespace Connected.Common.Collections;
internal sealed class QueueService : DistributedService, IQueueService
{

@ -1,4 +1,4 @@
namespace Common;
namespace Connected.Common;
public static class CommonSchemas
{
public const string DocumentSchema = "dcm";

@ -0,0 +1,37 @@
using Connected.Annotations;
using Connected.Common.Documents;
using Connected.Common.Globalization;
using Connected.Common.Security.Identity;
using Connected.Globalization;
using Connected.Net.Endpoints;
using Connected.Net.Server;
using Connected.Security.Identity;
using Connected.ServiceModel;
using Microsoft.Extensions.DependencyInjection;
[assembly: MicroService(MicroServiceType.Service)]
namespace Connected.Common;
internal class CommonStartup : Startup
{
protected override void OnConfigureServices(IServiceCollection services)
{
services.AddScoped(typeof(IGlobalizationService), typeof(GlobalizationService));
services.AddScoped(typeof(IIdentityService), typeof(IdentityService));
services.AddTransient(typeof(IDocumentLocker<,>), typeof(DocumentLocker<,>));
}
protected override async Task OnInitialize(Dictionary<string, string> args)
{
if (Services is null || Services.GetService<IContextProvider>() is not IContextProvider provider)
return;
using var ctx = provider.Create();
if (ctx.GetService<IEndpointService>() is not IEndpointService endpoints || ctx.GetService<IEndpointServer>() is not IEndpointServer server)
return;
await server.Initialize(await endpoints.Query(), ctx.CancellationToken);
}
}

@ -9,12 +9,12 @@
<ItemGroup>
<ProjectReference Include="..\..\Connected\Connected\Connected.csproj" />
<ProjectReference Include="..\..\Framework.ServiceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
<ProjectReference Include="..\..\Framework\Connected.Globalization\Connected.Globalization.csproj" />
<ProjectReference Include="..\..\Framework\Connected.Net\Connected.Net.csproj" />
<ProjectReference Include="..\..\Framework\Connected.Services\Connected.Services.csproj" />
<ProjectReference Include="..\..\Framework\Connected.Validation\Connected.Validation.csproj" />
<ProjectReference Include="..\Common.Model\Common.Model.csproj" />
<ProjectReference Include="..\..\connected.framework.serviceModel\Connected.ServiceModel\Connected.ServiceModel.csproj" />
<ProjectReference Include="..\..\connected.framework\Connected.Globalization\Connected.Globalization.csproj" />
<ProjectReference Include="..\..\connected.framework\Connected.Net\Connected.Net.csproj" />
<ProjectReference Include="..\..\connected.framework\Connected.Services\Connected.Services.csproj" />
<ProjectReference Include="..\..\connected.framework\Connected.Validation\Connected.Validation.csproj" />
<ProjectReference Include="..\Connected.Common.Model\Connected.Common.Model.csproj" />
</ItemGroup>
<ItemGroup>

@ -1,6 +1,6 @@
using Connected.Data;
namespace Common;
namespace Connected.Common;
public static class RecordStatusLocalizer
{

@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
using Connected.ServiceModel.Annotations;
using Connected.ServiceModel.Data;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
[Table(Schema = CommonSchemas.CommonSchema)]
internal sealed record DistributedLock : TableEntity<Guid, string>, IDistributedLock

@ -1,7 +1,7 @@
using Connected.ServiceModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using Connected.ServiceModel;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
public sealed class DistributedLockArgs : Dto
{
[Required, MaxLength(128)]

@ -4,7 +4,7 @@ using Connected.Entities.Storage;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
internal sealed class DistributedLockOps
{
public class Lock : ServiceFunction<DistributedLockArgs, Guid>

@ -5,7 +5,7 @@ using Connected.Entities;
using Connected.Entities.Storage;
using Connected.Middleware;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityProtector<DistributedLock>
{
public DistributedLockProtector(IStorageProvider storage, ICacheContext cache)
@ -52,9 +52,9 @@ internal sealed class DistributedLockProtector : MiddlewareComponent, IEntityPro
* must check that anyway
*/
var entry = await (from dc in Storage.Open<DistributedLock>()
where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
&& string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
select dc).AsEntity();
where string.Equals(dc.Entity, args.Entity.Entity, StringComparison.OrdinalIgnoreCase)
&& string.Equals(dc.EntityId, args.Entity.EntityId, StringComparison.OrdinalIgnoreCase)
select dc).AsEntity();
/*
* It exists, we must perform additional checks.
*/

@ -1,8 +1,8 @@
using Connected.ServiceModel;
using Connected.Services;
using Ops = Common.Distributed.DistributedLockOps;
using Ops = Connected.Common.Distributed.DistributedLockOps;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
internal sealed class DistributedLockService : DistributedService, IDistributedLockService
{
public DistributedLockService(IContext context) : base(context)

@ -1,6 +1,6 @@
using Connected.Data;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
public interface IDistributedLock : IPrimaryKey<Guid>
{
string Entity { get; init; }

@ -1,7 +1,7 @@
using Connected.Annotations;
using Connected.ServiceModel;
namespace Common.Distributed;
namespace Connected.Common.Distributed;
[Service]
public interface IDistributedLockService

@ -3,7 +3,7 @@ using Connected.Annotations;
using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
namespace Common.Documents;
namespace Connected.Common.Documents;
/// <summary>
/// Default implementation of the <see cref="IDocument{TPrimaryKey}"/> interface.
/// </summary>

@ -1,7 +1,6 @@
using Connected;
using Connected.Notifications.Events;
using Connected.Notifications.Events;
namespace Common.Documents;
namespace Connected.Common.Documents;
public abstract class DocumentListener<TArgs, TDocument, TPrimaryKey> : EventListener<TArgs>
where TArgs : IDto
where TDocument : IDocument<TPrimaryKey>

@ -1,10 +1,9 @@
using Common.Distributed;
using Connected;
using Connected.Common.Distributed;
using Connected.Interop;
using Connected.ServiceModel;
using Connected.Threading;
namespace Common.Documents;
namespace Connected.Common.Documents;
internal sealed class DocumentLocker<TDocument, TPrimaryKey> : IDocumentLocker<TDocument, TPrimaryKey>
where TDocument : IDocument<TPrimaryKey>
where TPrimaryKey : notnull

@ -2,7 +2,7 @@
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Documents;
namespace Connected.Common.Documents;
public abstract class DocumentService<TDocumentPrimaryKey, TItemPrimaryKey> : EntityService<TDocumentPrimaryKey>, IDocumentService<TDocumentPrimaryKey, TItemPrimaryKey>
{
protected DocumentService(IContext context) : base(context)

@ -1,4 +1,4 @@
namespace Common.Documents;
namespace Connected.Common.Documents;
public interface IDocumentLocker<TDocument, TPrimaryKey> : IDisposable
where TDocument : IDocument<TPrimaryKey>
where TPrimaryKey : notnull

@ -2,7 +2,7 @@
using Connected.Security.Identity;
using Connected.Validation;
namespace Common.Documents;
namespace Connected.Common.Documents;
public abstract class InsertDocumentValidator<TDocumentArgs> : MiddlewareComponent, IValidator<TDocumentArgs>
where TDocumentArgs : InsertDocumentArgs
{

@ -1,12 +1,11 @@
using System.Globalization;
using Connected;
using Connected.Data;
using Connected.Globalization;
using Connected.Globalization.Languages;
using Connected.Security.Identity;
using Connected.ServiceModel;
namespace Common.Globalization;
namespace Connected.Common.Globalization;
internal class GlobalizationService : IGlobalizationService
{

@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
using Connected.Globalization.Languages;
namespace Common.Globalization;
namespace Connected.Common.Globalization;
/// <summary>
/// The implementation of the <see cref="ILanguage"/> entity.

@ -2,7 +2,7 @@
using Connected.Entities.Caching;
using Connected.ServiceModel;
namespace Common.Globalization;
namespace Connected.Common.Globalization;
internal interface ILanguageCache : IEntityCacheClient<Language, int>
{

@ -1,5 +1,4 @@
using System.Collections.Immutable;
using Connected;
using Connected.Entities;
using Connected.Entities.Storage;
using Connected.Globalization.Languages;
@ -7,7 +6,7 @@ using Connected.Notifications.Events;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Globalization;
namespace Connected.Common.Globalization;
/// <summary>
/// Queries all <see cref="ILanguage"/> records except those marked as deleting.

@ -1,11 +1,11 @@
using System.Collections.Immutable;
using Common.Security;
using Connected.Common.Security;
using Connected.Globalization.Languages;
using Connected.ServiceModel;
using Connected.Services;
using Connected.Services.Annotations;
namespace Common.Globalization;
namespace Connected.Common.Globalization;
/// <summary>
/// The implementation of the <see cref="ILanguageService"/> service.

@ -4,7 +4,7 @@ using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
using Connected.Net.Endpoints;
namespace Common.Net;
namespace Connected.Common.Net;
[Table(Schema = SchemaAttribute.DefaultSchema)]
internal record Endpoint : ConsistentEntity<int>, IEndpoint

@ -1,6 +1,6 @@
using Connected.Entities.Caching;
namespace Common.Net;
namespace Connected.Common.Net;
internal interface IEndpointCache : IEntityCacheClient<Endpoint, int> { }
internal class EndpointCache : EntityCacheClient<Endpoint, int>, IEndpointCache

@ -1,11 +1,10 @@
using System.Collections.Immutable;
using Connected;
using Connected.Entities;
using Connected.Net.Endpoints;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Net;
namespace Connected.Common.Net;
/// <summary>
/// Endpoints are singleton but their service is scoped so we must use Isolated database connections for all methods.

@ -5,7 +5,7 @@ using Connected.ServiceModel;
using Connected.Services;
using Connected.Services.Annotations;
namespace Common.Net;
namespace Connected.Common.Net;
internal sealed class EndpointService : EntityService<int>, IEndpointService
{

@ -8,7 +8,7 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace Common {
namespace Connected.Common {
using System;
@ -39,7 +39,7 @@ namespace Common {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Common.SR", typeof(SR).Assembly);
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Connected.Common.SR", typeof(SR).Assembly);
resourceMan = temp;
}
return resourceMan;

@ -1,4 +1,4 @@
namespace Common.Security;
namespace Connected.Common.Security;
public static class CommonClaims
{

@ -1,7 +1,7 @@
using Connected.Security.Identity;
using Microsoft.AspNetCore.Http;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal class IdentityService : IIdentityService
{

@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
using Connected.Security.Identity;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
[Table(Schema = SchemaAttribute.SysSchema)]
internal record Role : ConsistentEntity<int>, IRole

@ -1,7 +1,7 @@
using Connected.Entities.Caching;
using Connected.Security.Identity;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal interface IRoleCache : IEntityCacheClient<Role, int> { }
internal sealed class RoleCache : EntityCacheClient<Role, int>, IRoleCache

@ -1,5 +1,4 @@
using System.Collections.Immutable;
using Connected;
using Connected.Entities;
using Connected.Entities.Storage;
using Connected.Notifications;
@ -9,7 +8,7 @@ using Connected.ServiceModel;
using Connected.Services;
using Connected.Validation;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
{
@ -22,7 +21,7 @@ internal sealed class QueryRoles : ServiceFunction<IDto, ImmutableList<IRole>>
protected override async Task<ImmutableList<IRole>?> OnInvoke()
{
return await (from dc in Cache
select dc).AsEntities<IRole>();
select dc).AsEntities<IRole>();
}
}
@ -37,8 +36,8 @@ internal sealed class SelectRole : ServiceFunction<PrimaryKeyArgs<int>, IRole?>
protected override async Task<IRole?> OnInvoke()
{
return await (from dc in Cache
where dc.Id == Arguments.Id
select dc).AsEntity();
where dc.Id == Arguments.Id
select dc).AsEntity();
}
}
@ -53,8 +52,8 @@ internal sealed class SelectRoleByName : ServiceFunction<NameArgs, IRole?>
protected override async Task<IRole?> OnInvoke()
{
return await (from dc in Cache
where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
select dc).AsEntity();
where string.Equals(dc.Name, Arguments.Name, StringComparison.OrdinalIgnoreCase)
select dc).AsEntity();
}
}
@ -72,8 +71,8 @@ internal sealed class LookupRoles : ServiceFunction<PrimaryKeyListArgs<int>, Imm
return default;
return await (from dc in Cache
where Arguments.IdList.Any(f => f == dc.Id)
select dc).AsEntities<IRole>();
where Arguments.IdList.Any(f => f == dc.Id)
select dc).AsEntities<IRole>();
}
}

@ -5,7 +5,7 @@ using Connected.ServiceModel;
using Connected.Services;
using Connected.Services.Annotations;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal class RoleService : EntityService<int>, IRoleService
{

@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
using Connected.Security.Identity;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
[Table(Schema = SchemaAttribute.SysSchema)]
internal record class User : ConsistentEntity<int>, IUser, IUserPassport

@ -1,6 +1,6 @@
using Connected.Entities.Caching;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal interface IUserCache : IEntityCacheClient<User, int> { }
internal sealed class UserCache : EntityCacheClient<User, int>, IUserCache

@ -1,5 +1,4 @@
using System.Collections.Immutable;
using Connected;
using Connected.Entities;
using Connected.Entities.Storage;
using Connected.Notifications.Events;
@ -8,7 +7,7 @@ using Connected.Security.Identity;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal sealed class QueryUsers : ServiceFunction<IDto, ImmutableList<IUser>?>
{
@ -35,8 +34,8 @@ internal sealed class SelectUser : ServiceFunction<PrimaryKeyArgs<int>, IUser?>
protected override async Task<IUser?> OnInvoke()
{
return await (from dc in Cache
where dc.Id == Arguments.Id
select dc).AsEntity();
where dc.Id == Arguments.Id
select dc).AsEntity();
}
}
/// <summary>
@ -102,8 +101,8 @@ internal sealed class LookupUsers : ServiceFunction<PrimaryKeyListArgs<int>, Imm
return default;
return await (from dc in Cache
where Arguments.IdList.Contains(dc.Id)
select dc).AsEntities<IUser>();
where Arguments.IdList.Contains(dc.Id)
select dc).AsEntities<IUser>();
}
}

@ -5,7 +5,7 @@ using Connected.ServiceModel;
using Connected.Services;
using Connected.Services.Annotations;
namespace Common.Security.Identity;
namespace Connected.Common.Security.Identity;
internal class UserService : EntityService<int>, IUserService
{

@ -3,7 +3,7 @@ using Connected.Entities;
using Connected.Entities.Annotations;
using Connected.Security.Membership;
namespace Common.Security.Membership;
namespace Connected.Common.Security.Membership;
[Table(Schema = SchemaAttribute.SysSchema)]
internal sealed record Membership : Entity<int>, IMembership

@ -1,6 +1,6 @@
using Connected.Entities.Caching;
namespace Common.Security.Membership;
namespace Connected.Common.Security.Membership;
internal interface IMembershipCache : IEntityCacheClient<Membership, int> { }
internal class MembershipCache : EntityCacheClient<Membership, int>, IMembershipCache

@ -1,5 +1,4 @@
using System.Collections.Immutable;
using Connected;
using Connected.Entities;
using Connected.Entities.Storage;
using Connected.Notifications.Events;
@ -7,7 +6,7 @@ using Connected.Security.Membership;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Security.Membership;
namespace Connected.Common.Security.Membership;
internal sealed class DeleteMembership : ServiceAction<PrimaryKeyArgs<int>>
{
@ -47,7 +46,7 @@ internal sealed class QueryMembership : ServiceFunction<IDto, ImmutableList<IMem
protected override async Task<ImmutableList<IMembership>?> OnInvoke()
{
return await (from dc in MembershipCache
select dc).AsEntities<IMembership>();
select dc).AsEntities<IMembership>();
}
}
@ -62,9 +61,9 @@ internal sealed class SearchMembership : ServiceFunction<MembershipQueryArgs, Im
protected override async Task<ImmutableList<IMembership>?> OnInvoke()
{
return await (from dc in MembershipCache
where (Arguments.User == 0 || (Arguments.User == dc.User))
&& (Arguments.Role == 0 || (Arguments.Role == dc.Role))
select dc).AsEntities<IMembership>();
where (Arguments.User == 0 || (Arguments.User == dc.User))
&& (Arguments.Role == 0 || (Arguments.Role == dc.Role))
select dc).AsEntities<IMembership>();
}
}
@ -79,8 +78,8 @@ internal sealed class SelectMembership : ServiceFunction<PrimaryKeyArgs<int>, IM
protected override async Task<IMembership?> OnInvoke()
{
return await (from dc in MembershipCache
where dc.Id == Arguments.Id
select dc).AsEntity();
where dc.Id == Arguments.Id
select dc).AsEntity();
}
}

@ -5,7 +5,7 @@ using Connected.ServiceModel;
using Connected.Services;
using Connected.Services.Annotations;
namespace Common.Security.Membership;
namespace Connected.Common.Security.Membership;
internal class MembershipService : EntityService<int>, IMembershipService
{

@ -3,7 +3,7 @@ using Connected.Entities.Annotations;
using Connected.Entities.Consistency;
using Connected.Security.Permissions;
namespace Common.Security.Permissions;
namespace Connected.Common.Security.Permissions;
[Table(Schema = SchemaAttribute.SysSchema)]
internal sealed record Permission : ConsistentEntity<int>, IPermission

@ -1,6 +1,6 @@
using Connected.Entities.Caching;
namespace Common.Security.Permissions;
namespace Connected.Common.Security.Permissions;
internal interface IPermissionCache : IEntityCacheClient<Permission, int> { }
internal class PermissionCache : EntityCacheClient<Permission, int>, IPermissionCache

@ -1,5 +1,4 @@
using System.Collections.Immutable;
using Connected;
using Connected.Entities;
using Connected.Entities.Storage;
using Connected.Notifications.Events;
@ -7,7 +6,7 @@ using Connected.Security.Permissions;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Security.Permissions;
namespace Connected.Common.Security.Permissions;
internal sealed class DeletePermission : ServiceAction<PrimaryKeyArgs<int>>
{
@ -47,7 +46,7 @@ internal sealed class QueryPermissions : ServiceFunction<IDto, ImmutableList<IPe
protected override async Task<ImmutableList<IPermission>?> OnInvoke()
{
return await (from dc in PermissionCache
select dc).AsEntities<IPermission>();
select dc).AsEntities<IPermission>();
}
}
@ -62,10 +61,10 @@ internal sealed class SearchPermissions : ServiceFunction<PermissionSearchArgs,
protected override async Task<ImmutableList<IPermission>?> OnInvoke()
{
return await (from dc in PermissionCache
where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
&& (string.IsNullOrEmpty(Arguments.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
&& (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
select dc).AsEntities<IPermission>();
where (string.IsNullOrEmpty(Arguments.Entity) || string.Equals(Arguments.Entity, dc.Entity, StringComparison.OrdinalIgnoreCase))
&& (string.IsNullOrEmpty(Arguments.Claim) || string.Equals(Arguments.Claim, dc.Claim, StringComparison.OrdinalIgnoreCase))
&& (string.IsNullOrEmpty(Arguments.PrimaryKey) || string.Equals(Arguments.PrimaryKey, dc.PrimaryKey, StringComparison.OrdinalIgnoreCase))
select dc).AsEntities<IPermission>();
}
}
@ -80,8 +79,8 @@ internal sealed class SelectPermission : ServiceFunction<PrimaryKeyArgs<int>, IP
protected override async Task<IPermission?> OnInvoke()
{
return await (from dc in PermissionCache
where dc.Id == Arguments.Id
select dc).AsEntity();
where dc.Id == Arguments.Id
select dc).AsEntity();
}
}

@ -5,7 +5,7 @@ using Connected.ServiceModel;
using Connected.Services;
using Connected.Services.Annotations;
namespace Common.Security.Permissions;
namespace Connected.Common.Security.Permissions;
internal class PermissionService : EntityService<int>, IPermissionService
{

@ -3,7 +3,7 @@ using Connected.Configuration.Settings;
using Connected.ServiceModel;
using Connected.Services;
namespace Common.Settings;
namespace Connected.Common.Settings;
internal class SettingsService : EntityService<int>, ISettingsService
{
public SettingsService(IContext context) : base(context)
Loading…
Cancel
Save