Nsj-rest-lib

Latest version: v4.0.0

Safety actively analyzes 707268 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

4.0.0

Breaking change:

O comportamento padrão das queries de update mudou.

A partir de agora, em vez de todos os campos existentes na classe Entity serem considerados para criação do SQL de Update (gerando update para "null" para todos os campos contidos na Entity, mas não do DTO), apenas os campos que sejam contidos no DTO, com correspondente no Entity, é que serão considerados nessas queries.

Desse modo, uma mesma entity (representando uma tabela), pode ser usada para vários DTOs, não gerando updates nos campos que fogem ao escopo de cada DTO em específico.

Não há breaking change no sentido da sintaxe do código, mas, há mudança comportamental significativa, de modo que é preciso estar atento para uso da nova versão.

3.0.0

Nova feature:

- Permite a recuperação do objeto completo após um insert, de modo que uma rota de post possa ecoar o objeto recém criado (e não apenas os campos relativos ao DTO de retorno). A ideia aqui é permitir um comportamento mais semelhante ao esperado por algumas bibliotecas de front-end (que esperam eco do objeto, no caso de um POST).
- É importante destacar que apenas os campos resumo são considerados nesse retorno.
- Para usar, é preciso marcar a flag `retrieve_after_insert` como `True`, na declaração do seu método `PostRoute` em seu controller.

Breaking Change:

Foi adicionado um parâmetro novo no insert do rest lib. Então caso esse método esteja sobrescrito, ele irá dar erro ao usar a nova versão do rest lib.

Anteriormente a definição do método era

python
def insert(
self,
dto: DTOBase,
aditional_filters: Dict[str, Any] = None,
custom_before_insert: Callable = None,
custom_after_insert: Callable = None,
) -> DTOBase:


e agora é:

python
def insert(
self,
dto: DTOBase,
aditional_filters: Dict[str, Any] = None,
custom_before_insert: Callable = None,
custom_after_insert: Callable = None,
retrieve_after_insert: bool = False,
) -> DTOBase:


Se o método estiver sobrescrito é necessário adicionar o novo parâmetro retrieve_after_insert na sobrescrição.

—----------------------------------------------------------------------------------------------------------------------
Em vez disso é possível fazer uma proteção ao fazer a sobrescrição, usando o parâmetro kwargs, da seguinte forma :

python
def insert(
self,
dto: EntregaDTO,
**kwargs
) -> DTOBase:


e para passar esse parâmetro para um outro método é desta forma:

python
self._save(
insert=True,
dto=dto,
manage_transaction=False,
partial_update=False,
**kwargs
)


Definindo a sobrescrição dessa forma protege contra qualquer parâmetro opcional futuro que seja adicionado no insert do rest lib

2.12.1

Novas features:

* Suportar a passagem de listas de objetos nos métodos `POST`, `PUT` e `DELETE`.
* Recurso de **UPSERT** no método `PUT`, onde para se usar basta passar o parâmetro `?upsert=true`.

2.11.0

Novas features:

* Declarar uso de um `service_name` customizado para propriedades do tipo `DTOListField`.
* Assim, o service customizado pode executar também código customizado para manipular os registros de uma listagem (não ficando mais preso ao comportamento padrão do rest_lib).
* O único requisito é que o service customizado siga a mesma interface pública do ServiceBase (delcarando-se os métodos: get, list, insert, update, partial_update e delete).
* Útil para uso conjunto com a biblioteca `erp3-py-commons`, por exemplo, para a manipualação de listas de Anexos (no padrão do ERP3).

2.10.0

Novas features:

* Possibildiade de instanciar um DTO a partir de um dict, cujas entradas obedeçam a nomenclatura dos campos da entity (mesmo sem passar uma entity, de fato, no construtor)
* Ver flag `kwargs_as_entity` no construtor da classe DTOBase

2.9.0

Novas features:

* APIs Desktop
* Implementação de um Command Line Interface genérico.
* A ideia é permitir a execução de qualquer uma das rotas, declaradas no padrão RestLib, como um commando invocável por meio de uma linha de comando (CLI).
* Ver a [documentação completa](internal_docs/apis_desktop.md) da feature.

Page 1 of 2

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.