Tooark.Entities
3.2.0
dotnet add package Tooark.Entities --version 3.2.0
NuGet\Install-Package Tooark.Entities -Version 3.2.0
<PackageReference Include="Tooark.Entities" Version="3.2.0" />
<PackageVersion Include="Tooark.Entities" Version="3.2.0" />
<PackageReference Include="Tooark.Entities" />
paket add Tooark.Entities --version 3.2.0
#r "nuget: Tooark.Entities, 3.2.0"
#:package Tooark.Entities@3.2.0
#addin nuget:?package=Tooark.Entities&version=3.2.0
#tool nuget:?package=Tooark.Entities&version=3.2.0
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) — colunaid(uuid)
- Construtores (para classes derivadas)
BaseEntity()— geraIdautomaticamenteBaseEntity(Guid id)— defineIddeterminístico (seed/testes/factories)
- Observações
- O
Idtem setter privado; não existeSetIdpúblico. - Exemplos de Uso.
- O
InitialEntity
- Propriedades
CreatedById(Guid) — colunacreated_by(uuid)CreatedAt(DateTime/UTC) — colunacreated_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 deGuid.- Em caso de dados inválidos, lança
BadRequestException. - Exemplos de Uso.
- Herda de
DetailedEntity
- Propriedades
UpdatedById(Guid) — colunaupdated_by(uuid)UpdatedAt(DateTime/UTC) — colunaupdated_at(timestamp with time zone)
- Métodos
SetCreatedBy(CreatedBy createdById)— define tambémUpdatedByIdSetUpdatedBy(UpdatedBy updatedById)
- Observações
- Herda de
InitialEntity. UpdatedByIdé Value Object e aceita conversão implícita a partir deGuid.- Em caso de dados inválidos, lança
BadRequestException. - Exemplos de Uso.
- Herda de
VersionedEntity
- Propriedades
Version(long) — colunaversion(bigint), valor padrão1
- 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.
- Herda de
SoftDeletableEntity
- Propriedades
Deleted(bool) — colunadeleted(bool), valor padrãofalse
- Métodos
ValidateNotDeleted()— valida se não está deletada e adiciona notificaçãoEnsureNotDeleted()— lança exception se estiver deletadaSetDeleted(UpdatedBy changedById)— marca como deletada e atualizaSetRestored(UpdatedBy changedById)— restaura e atualiza
- Observações
- Herda de
DetailedEntity. - Em caso de dados inválidos, lança
BadRequestException. - Exemplos de Uso.
- Herda de
AuditableEntity
- Propriedades
Version(long)Deleted(bool)DeletedById(Guid?) — colunadeleted_by(uuid)DeletedAt(DateTime?) — colunadeleted_at(timestamp with time zone)RestoredById(Guid?) — colunarestored_by(uuid)RestoredAt(DateTime?) — colunarestored_at(timestamp with time zone)
- Métodos
ValidateNotDeleted()— valida se não está deletada e adiciona notificaçãoEnsureNotDeleted()— lança exception se estiver deletadaSetUpdatedBy(UpdatedBy updatedById)— atualiza e incrementa a versãoSetDeleted(DeletedById deletedById)— marca como deletada, registra o usuário e a data da exclusão, e incrementa a versãoSetRestored(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.
- Herda de
FileEntity
- Propriedades
FileName(string) — colunafile_name(text)Title(string) — colunatitle(varchar(255))Link(string) — colunalink(text)FileFormat(string?) — colunafile_format(varchar(10))Type(EFileType) — colunatype(int)Size(long) — colunasize(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. FileStorageeTitlesão Value Objects. Em caso de dados inválidos, lançaBadRequestException.- Exemplos de Uso.
- Herda de
📝 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.BAS2InitialEntity:T.ENT.INI1SoftDeletableEntity:T.ENT.SOF1AuditableEntity: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 | Versions 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. |
-
net8.0
- Tooark.Enums (>= 3.2.0)
- Tooark.Exceptions (>= 3.2.0)
- Tooark.Notifications (>= 3.2.0)
- Tooark.Utils (>= 3.2.0)
- Tooark.ValueObjects (>= 3.2.0)
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 |