Pular para o conteúdo

Sil.Builder.Runtime

Oferece ids v7, tenant, Result, envelope HTTP, listagem, permissões e unidade de trabalho.

Use a composição do template: AddSilRuntime, DI direta e middlewares. Configure autenticação confiável e os serviços de autorização do consumidor.

Janela do terminal
dotnet run --project tests/Sil.Builder.Runtime.Tests

Comandos de tests/ e src/ rodam no checkout do builder. Comandos dotnet builder rodam no backend consumidor após a instalação da ferramenta.

PatchField<T> distingue ausência de um valor explícito, inclusive null, false e 0. Os DTOs de PATCH gerados usam esse tipo e recusam propriedades fora da allowlist; os de POST e PUT também recusam propriedade desconhecida (400 HTTP_BAD_REQUEST). Os decorators mantêm validação e transação; IRequestSaveErrorMapper conserva os códigos próprios do PATCH quando a persistência identifica a gravação como UPDATE.

AddSilApi reúne os registros do runtime e UseSilApi monta o pipeline HTTP padrão, incluindo autenticação, contexto público, tenant e autorização. O host automático do SDK usa essas extensões; hosts personalizados podem continuar compondo as extensões individuais.

SilError é o tipo público de Sil.Builder.Runtime.Results, com Code, Message, DisplayMessage e status HTTP. Este runtime é independente do SDK antigo. Os erros de negócio gerados usam códigos simbólicos estáveis por operação/local, registrados em .builder/errors.json; identificadores S… dependem de alocação no registro Shipyard (PAR-07), não são fabricados pelo gerador.

FindAsync carrega e rastreia uma entidade; AddAsync agenda inserção e a unidade de trabalho confirma a gravação. MarkCreated, MarkUpdated e MarkDeleted registram o ciclo de vida. Esses métodos de auditoria não substituem operações CRUD de persistência.

Sil.Builder.Runtime.Validation.VersionedItemsPolicy valida coleções JSON com chave canônica única e valores legados condicionais à origem persistida. IVersionedItemsSource<TRequest> é a porta obrigatória para a origem autorizada e o histórico de chaves; o consumidor deve implementá-la no mesmo escopo transacional e proteger concorrência. A declaração versionedItems gera chamadas no handler antes de alterar a entidade, documentação e testes. Não existe provedor permissivo de produção.

Tenant é fixado por escopo. GET vazio retorna 204; PUT/PATCH/DELETE inexistente, 400. Permissões e políticas não são concedidas automaticamente.

No POST, ToCreatedHttpResult devolve object_id singular para um registro e array para um lote, inclusive se o lote tiver um item. A ordem dos IDs segue a ordem passada pelo handler; lote sem ID gravado devolve 204 sem corpo. O handler deve devolver o ID persistido no upsert e gravar o lote por uma única unidade de trabalho. Em agregados com filhos, devolva somente o ID da raiz.

README do componente ↗ · Catálogo de comandos · Todos os componentes