Tooark.Entities 3.2.0

dotnet add package Tooark.Entities --version 3.2.0
                    
NuGet\Install-Package Tooark.Entities -Version 3.2.0
                    
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="Tooark.Entities" Version="3.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tooark.Entities" Version="3.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Tooark.Entities" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Tooark.Entities --version 3.2.0
                    
#r "nuget: Tooark.Entities, 3.2.0"
                    
#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.
#:package Tooark.Entities@3.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Tooark.Entities&version=3.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Tooark.Entities&version=3.2.0
                    
Install as a Cake Tool

Tooark.Entities

Biblioteca com entidades base para aplicações .NET, incluindo suporte a identificadores únicos, auditoria, controle de versão e exclusão lógica.

📦 Conteúdo do Pacote

Entidades

Classe Descrição
BaseEntity Identificador único + suporte a notificações/validações
InitialEntity Informações de criação (CreatedById/CreatedAt)
DetailedEntity Informações de atualização (UpdatedById/UpdatedAt)
VersionedEntity Controle de versão (Version) incrementada em atualizações
SoftDeletableEntity Exclusão lógica simples (Deleted) + atualização via UpdatedById
AuditableEntity Auditoria completa: versão (Version) + exclusão(Deleted)/restauração com usuário/data (DeletedById/DeletedAt/RestoredById/RestoredAt)
FileEntity Entidade base para arquivos (FileName, Title, Link, FileFormat, Type, Size)

Value Objects usados nas entidades

As entidades usam Value Objects do pacote Tooark.ValueObjects (ex.: CreatedById, UpdatedById, DeletedById, RestoredById, FileStorage, Title).


🔧 Instalação

dotnet add package Tooark.Entities

⚙️ Configuração

Não há configuração adicional.


🧩 Entidades (Detalhes)

BaseEntity

  • Propriedades
    • Id (Guid) — coluna id (uuid)
  • Construtores (para classes derivadas)
    • BaseEntity() — gera Id automaticamente
    • BaseEntity(Guid id) — define Id determinístico (seed/testes/factories)
  • Observações

InitialEntity

  • Propriedades
    • CreatedById (Guid) — coluna created_by (uuid)
    • CreatedAt (DateTime/UTC) — coluna created_at (timestamp with time zone)
  • Métodos
    • SetCreatedBy(CreatedBy createdById)
  • Observações
    • Herda de BaseEntity.
    • CreatedById é Value Object e aceita conversão implícita a partir de Guid.
    • Em caso de dados inválidos, lança BadRequestException.
    • Exemplos de Uso.

DetailedEntity

  • Propriedades
    • UpdatedById (Guid) — coluna updated_by (uuid)
    • UpdatedAt (DateTime/UTC) — coluna updated_at (timestamp with time zone)
  • Métodos
    • SetCreatedBy(CreatedBy createdById) — define também UpdatedById
    • SetUpdatedBy(UpdatedBy updatedById)
  • Observações
    • Herda de InitialEntity.
    • UpdatedById é Value Object e aceita conversão implícita a partir de Guid.
    • Em caso de dados inválidos, lança BadRequestException.
    • Exemplos de Uso.

VersionedEntity

  • Propriedades
    • Version (long) — coluna version (bigint), valor padrão 1
  • Métodos
    • SetUpdatedBy(UpdatedBy updatedById) — atualiza e incrementa a versão
  • Observações
    • Herda de DetailedEntity.
    • Em caso de dados inválidos, lança BadRequestException.
    • Exemplos de Uso.

SoftDeletableEntity

  • Propriedades
    • Deleted (bool) — coluna deleted (bool), valor padrão false
  • Métodos
    • ValidateNotDeleted() — valida se não está deletada e adiciona notificação
    • EnsureNotDeleted() — lança exception se estiver deletada
    • SetDeleted(UpdatedBy changedById) — marca como deletada e atualiza
    • SetRestored(UpdatedBy changedById) — restaura e atualiza
  • Observações
    • Herda de DetailedEntity.
    • Em caso de dados inválidos, lança BadRequestException.
    • Exemplos de Uso.

AuditableEntity

  • Propriedades
    • Version (long)
    • Deleted (bool)
    • DeletedById (Guid?) — coluna deleted_by (uuid)
    • DeletedAt (DateTime?) — coluna deleted_at (timestamp with time zone)
    • RestoredById (Guid?) — coluna restored_by (uuid)
    • RestoredAt (DateTime?) — coluna restored_at (timestamp with time zone)
  • Métodos
    • ValidateNotDeleted() — valida se não está deletada e adiciona notificação
    • EnsureNotDeleted() — lança exception se estiver deletada
    • SetUpdatedBy(UpdatedBy updatedById) — atualiza e incrementa a versão
    • SetDeleted(DeletedById deletedById) — marca como deletada, registra o usuário e a data da exclusão, e incrementa a versão
    • SetRestored(RestoredById restoredById) — restaura, registra o usuário e a data da restauração, e incrementa a versão
  • Observações
    • Herda de DetailedEntity.
    • Em caso de dados inválidos, lança BadRequestException.
    • Exemplos de Uso.

FileEntity

  • Propriedades
    • FileName (string) — coluna file_name (text)
    • Title (string) — coluna title (varchar(255))
    • Link (string) — coluna link (text)
    • FileFormat (string?) — coluna file_format (varchar(10))
    • Type (EFileType) — coluna type (int)
    • Size (long) — coluna size (bigint)
  • Construtores (para classes derivadas)
    • FileEntity(FileStorage file, Title title, CreatedBy createdById)
    • FileEntity(FileStorage file, Title title, string fileFormat, EFileType type, long size, CreatedBy createdById)
  • Observações
    • Herda de InitialEntity.
    • FileStorage e Title são Value Objects. Em caso de dados inválidos, lança BadRequestException.
    • Exemplos de Uso.

📝 Exemplos de Uso

Entidade Base

using Tooark.Entities;

public class Produto : BaseEntity
{
  public Produto() { }
  public Produto(Guid id) : base(id) { }

  public string Nome { get; set; } = string.Empty;
  public decimal Valor { get; set; }
}

public class Program
{
  public static void Main()
  {
    var produto = new Produto
    {
      Nome = "Produto A",
      Valor = 100.0m
    };

    var idGerado = produto.Id;
    var produtoDeterministico = new Produto(Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"));
  }
}

Entidade Inicial

using Tooark.Entities;

public class Produto : InitialEntity
{
  public string Nome { get; set; } = string.Empty;
  public decimal Valor { get; set; }
}

public class Program
{
  public static void Main()
  {
    var produto = new Produto
    {
      Nome = "Produto A",
      Valor = 100.0m
    };

    // SetCreatedBy recebe CreatedBy (Value Object), mas Guid converte implicitamente.
    produto.SetCreatedBy(Guid.NewGuid());
  }
}

Entidade Detalhada

using Tooark.Entities;

public class Produto : DetailedEntity
{
  public string Nome { get; set; } = string.Empty;
  public decimal Valor { get; set; }
}

public class Program
{
  public static void Main()
  {
    var produto = new Produto
    {
      Nome = "Produto A",
      Valor = 100.0m
    };

    produto.SetCreatedBy(Guid.NewGuid());
    produto.SetUpdatedBy(Guid.NewGuid());
  }
}

Entidade Versionada

using Tooark.Entities;

public class Produto : VersionedEntity
{
  public string Nome { get; set; } = string.Empty;
  public decimal Valor { get; set; }
}

public class Program
{
  public static void Main()
  {
    var produto = new Produto
    {
      Nome = "Produto A",
      Valor = 100.0m
    };

    produto.SetCreatedBy(Guid.NewGuid());
    produto.SetUpdatedBy(Guid.NewGuid());

    var version = produto.Version;
  }
}

Entidade Deletável

using Tooark.Entities;

public class Produto : SoftDeletableEntity
{
  public string Nome { get; set; } = string.Empty;
  public decimal Valor { get; set; }
}

public class Program
{
  public static void Main()
  {
    var produto = new Produto
    {
      Nome = "Produto A",
      Valor = 100.0m
    };

    produto.SetCreatedBy(Guid.NewGuid());
    produto.SetDeleted(Guid.NewGuid());
    produto.SetRestored(Guid.NewGuid());
  }
}

Entidade Auditável

using Tooark.Entities;

public class Produto : AuditableEntity
{
  public string Nome { get; set; } = string.Empty;
  public decimal Valor { get; set; }
}

public class Program
{
  public static void Main()
  {
    var produto = new Produto
    {
      Nome = "Produto A",
      Valor = 100.0m
    };

    produto.SetCreatedBy(Guid.NewGuid());
    produto.SetUpdatedBy(Guid.NewGuid());
    produto.SetDeleted(Guid.NewGuid());
    produto.SetRestored(Guid.NewGuid());
  }
}

Entidade de Arquivo

using Tooark.Entities;
using Tooark.Enums;
using Tooark.ValueObjects;

public class Arquivo : FileEntity
{
  public Arquivo(string link, string name, string title, Guid createdById)
    : base(new FileStorage(link, name), new Title(title), new CreatedBy(createdById))
  { }

  public Arquivo(string link, string name, string title, string fileFormat, EFileType type, long size, Guid createdById)
    : base(new FileStorage(link, name), new Title(title), fileFormat, type, size, createdById)
  { }
}

public class Program
{
  public static void Main()
  {
    var arquivo = new Arquivo(
      link: "https://bucket.com/arquivo.pdf",
      name: "Arquivo.pdf",
      title: "Arquivo de teste",
      createdById: Guid.NewGuid()
    );

    var arquivoDetalhado = new Arquivo(
      link: "https://bucket.com/arquivo.pdf",
      name: "Arquivo.pdf",
      title: "Arquivo de teste",
      fileFormat: "pdf",
      type: EFileType.Document,
      size: 1024,
      createdById: Guid.NewGuid()
    );
  }
}

📋 Dependências

Projeto Versão Descrição
Tooark.Enums Tipos/enums compartilhados (ex.: EFileType)
Tooark.Exceptions Exceções (ex.: BadRequestException)
Tooark.Notifications Base de notificações usada pelas entidades
Tooark.Utils Utilitários internos do toolkit
Tooark.ValueObjects Value Objects usados por propriedades/métodos/constructores

⚠️ Códigos de Erro, Notificações e Soluções

Os códigos de erro para notificações seguem o padrão T.ENT.<SIGLA><N> (ex.: T.ENT.BAS1).

Alguns códigos utilizados diretamente nas entidades:

  • BaseEntity: T.ENT.BAS1, T.ENT.BAS2
  • InitialEntity: T.ENT.INI1
  • SoftDeletableEntity: T.ENT.SOF1
  • AuditableEntity: T.ENT.AUD1

Tabela de erros/notificações:

Entidade Mensagem Descrição Solução Retorno
BaseEntity Empty;Id Identificador vazio Defina um identificador válido para a entidade Notification
BaseEntity ChangeBlocked;Id Identificador não pode ser alterado Informe o identificador do registro Notification
InitialEntity ChangeBlocked;CreatedBy Criador não pode ser alterado Informe o criador do registro Exception
InitialEntity Field.Invalid;CreatedBy Campo do Criador inválido Informe um criador válido Exception
DetailedEntity ChangeBlocked;CreatedBy Criador não pode ser alterado Informe o criador do registro Exception
DetailedEntity Field.Invalid;CreatedBy Campo do Criador inválido Informe um criador válido Exception
DetailedEntity Field.Invalid;UpdatedBy Campo do Atualizador inválido Informe um atualizador válido Exception
VersionedEntity ChangeBlocked;CreatedBy Criador não pode ser alterado Informe o criador do registro Exception
VersionedEntity Field.Invalid;CreatedBy Campo do Criador inválido Informe um criador válido Exception
VersionedEntity Field.Invalid;UpdatedBy Campo do Atualizador inválido Informe um atualizador válido Exception
SoftDeletableEntity ChangeBlocked;CreatedBy Criador não pode ser alterado Informe o criador do registro Exception
SoftDeletableEntity Field.Invalid;CreatedBy Campo do Criador inválido Informe um criador válido Exception
SoftDeletableEntity Field.Invalid;UpdatedBy Campo do Atualizador inválido Informe um atualizador válido Exception
SoftDeletableEntity Record.Deleted Registro deletado Análise se é necessário restaurar o registro antes de realizar operações Notification
SoftDeletableEntity Record.Deleted Registro deletado Restaure o registro se necessário antes de realizar operações Exception
AuditableEntity ChangeBlocked;CreatedBy Criador não pode ser alterado Informe o criador do registro Exception
AuditableEntity Field.Invalid;CreatedBy Campo do Criador inválido Informe um criador válido Exception
AuditableEntity Field.Invalid;UpdatedBy Campo do Atualizador inválido Informe um atualizador válido Exception
AuditableEntity Field.Invalid;DeletedBy Campo do Deletador inválido Informe um deletador válido Exception
AuditableEntity Field.Invalid;RestoredBy Campo do Restaurador inválido Informe um restaurador válido Exception
AuditableEntity Record.Deleted Registro deletado Análise se é necessário restaurar o registro antes de realizar operações Notification
AuditableEntity Record.Deleted Registro deletado Restaure o registro se necessário antes de realizar operações Exception

🪪 Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests no repositório Tooark.Entities.

📄 Licença

Este projeto está licenciado sob a licença BSD 3-Clause. Veja o arquivo LICENSE para mais detalhes.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Tooark.Entities:

Package Downloads
Tooark

Package with all Tooark resources for .NET applications.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.2.0 31 1/21/2026
3.1.0 99 1/10/2026
3.0.0 104 1/9/2026
2.3.0 19 1/21/2026
2.2.1 99 1/6/2026
2.2.0 105 1/6/2026
2.1.9 220 10/29/2025
2.1.8 923 6/26/2025
2.1.7 313 6/17/2025
2.1.6 445 6/15/2025
2.1.5 215 6/14/2025
2.1.4 237 6/3/2025
2.1.3.3 210 6/3/2025
2.1.3.2 198 6/3/2025
2.1.3 203 6/3/2025
2.1.2 250 5/17/2025
2.1.1 156 5/3/2025
2.1.0 138 5/3/2025
2.0.8 147 4/26/2025
2.0.7 239 4/22/2025
2.0.6 252 4/20/2025
2.0.5 209 3/14/2025
2.0.4 225 3/14/2025
2.0.3 221 3/14/2025
2.0.2 226 3/13/2025
2.0.1 205 3/13/2025
2.0.0 836 3/13/2025