diff --git a/CHANGELOG.md b/CHANGELOG.md index 97a8ae2297..13a4575fef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm +## 0.10.4 (2024-08-28) + +### Bug Fixes + +- Fixed upsert entity failure when saving modified data for search relations calculations + + ## 0.10.3 (2024-08-28) ### Bug Fixes @@ -20,6 +27,7 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Reverted last bugfix + ## 0.10.1 (2024-08-26) ### Bug Fixes diff --git a/port_ocean/clients/port/mixins/entities.py b/port_ocean/clients/port/mixins/entities.py index b8a510a65e..a18f4f5e8d 100644 --- a/port_ocean/clients/port/mixins/entities.py +++ b/port_ocean/clients/port/mixins/entities.py @@ -58,11 +58,24 @@ async def upsert_entity( ) handle_status_code(response, should_raise) result = response.json() - result_entity = Entity.parse_obj(result) - # Set the results of the search relation and identifier to the entity - entity.identifier = result_entity.identifier or entity.identifier - entity.relations = result_entity.relations or entity.relations - return entity + result_entity = ( + Entity.parse_obj(result["entity"]) if result.get("entity") else entity + ) + # In order to save memory we'll keep only the identifier, blueprint and relations of the + # upserted entity result for later calculations + reduced_entity = Entity( + identifier=result_entity.identifier, blueprint=result_entity.blueprint + ) + + # Turning dict typed relations (raw search relations) is required + # for us to be able to successfully calculate the participation related entities + # and ignore the ones that don't as they weren't upserted + reduced_entity.relations = { + key: None if isinstance(relation, dict) else relation + for key, relation in result_entity.relations.items() + } + + return reduced_entity async def batch_upsert_entities( self, diff --git a/pyproject.toml b/pyproject.toml index 8de129f669..07dd1785a7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "port-ocean" -version = "0.10.3" +version = "0.10.4" description = "Port Ocean is a CLI tool for managing your Port projects." readme = "README.md" homepage = "https://app.getport.io"