GustavoAraujo26.ArchitectureTools 1.2.2

dotnet add package GustavoAraujo26.ArchitectureTools --version 1.2.2
NuGet\Install-Package GustavoAraujo26.ArchitectureTools -Version 1.2.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GustavoAraujo26.ArchitectureTools" Version="1.2.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GustavoAraujo26.ArchitectureTools --version 1.2.2
#r "nuget: GustavoAraujo26.ArchitectureTools, 1.2.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install GustavoAraujo26.ArchitectureTools as a Cake Addin
#addin nuget:?package=GustavoAraujo26.ArchitectureTools&version=1.2.2

// Install GustavoAraujo26.ArchitectureTools as a Cake Tool
#tool nuget:?package=GustavoAraujo26.ArchitectureTools&version=1.2.2

Architecture Tools

Introdução

Projeto para centralizar e expor algumas classes e ferramentas que utilizo com frequência, quando vou criar novos projetos.

Nele centralizo algumas classes implementando alguns design patterns, que auxiliam na criação de microsserviços.

Pacote foi criado no .NET Standard 2.1, para permitir a utilização em versões diferentes do .NET.

Principais funcionalidades

Abaixo, faço uma listagem das principais funcionalidades que podem ser encontrados no pacote.

Container que implementa o design pattern "Result". Utilizado para criar respostas para ações/métodos, se baseando no HTTP Status Code para informar se aquela ação foi realizada com sucesso ou falha. Além disso, permite devolver no seu corpo um objeto complexo (uma entidade, value object e afins), bem como structs (DateTime, Guid, integer, dentre outros).

Possui métodos estáticos que auxiliam na sua criação, seja para devolver uma chamada de sucesso ("Ok"), como para devolver chamadas de falha ("BadRequest", "NotFound", "InternalServerError", dentre outros status). Outra possibilidade é converter uma mensagem de resposta de uma chamada HTTP ("HttpResponseMessage") no container em si, já realizando a deserialização do conteúdo.

Implementa, "de certa forma", o design pattern "Options". Nele é possível realizar a leitura de variáveis de ambiente da aplicação, armazená-las internamente, para que, em momento posterior, o container possa ser recebido via injeção de dependências.

Classe implementada como "Singleton", para que possa ter somente uma instância injetada na aplicação.

A leitura e inicialização das variáveis pode ser feita tanto de forma unitária (passando variável por variável), como também através de uma lista de chaves de variáveis de ambiente.

Ferramenta para centralizar e controlar chamadas HTTP REST para outros serviços. O memso permite registrar diversas API's, com seus endpoints distintos e seus métodos.

Classe implementada como "Singleton", para que possa ter somente uma instância injetada na aplicação.

Para realizar as chamadas, basta acessar um item do "ApiResource", e acionar o método "Call", que espera a classe "ApiEndpointRequest". Através dela, é possível passar os parâmetros a serem utilizados na query da URL, ou enviar classe/objeto a ser transmitido no corpo do projeto.

Struct criada para auxiliar na utilização de "intervalos de período". Nele é possível armazenar um DateTime de início e um de término. Além disso, é possível realizar validação dos dados através do método "Validate".

Struct para representar mensagem de eventos a serem transmitidos em barramento de eventos (Azure EventBus, RabbitMQ, Kafka, etc).

Struct para centralizar dados de estado e datas de criação/alteração de um objeto.

Possui campo "State", para informar se o objeto está "habilitado" ou "desabilitado". Quando alterado o estado, via métodos "Enable"/"Disable", a data de alteração é alterada automaticamente.

Classe base para ser herdada, muito por "entidades", para centralizar dados básicos como "Id" e dados do estado do objeto.

Container para obter dados de uma opção de enumerador. Possui como propriedades o valor "inteiro" do item do enumerador, valor "string" do item do enumerador e descrição (quando houver o "decoration" DescriptionAttribute).

Container que controla paginação a ser realizada em uma lista de itens. No mesmo é possível calcular a quantidade de páginas disponíveis (anteriores e próximas). Nas listagens de páginas anteriores e próximas páginas, o limite da lista está como 5 itens.

Container para retorno de dados paginados. Possui duas propriedades: "Page" e "Content" (uma lista de objetos).

Extensões

Foram criadas algumas extensões para auxiliar e agilizar a utilização da biblioteca.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.2 71 6/19/2024
1.2.1 62 6/8/2024
1.2.0 61 6/8/2024
1.0.1 68 6/6/2024
1.0.0 71 6/6/2024

Correção de bug na validação da struct PeriodRange e criação da extensão "Truncate" para strings