-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for search identifier #909
Conversation
@@ -58,7 +58,7 @@ async def upsert_entity( | |||
) | |||
handle_status_code(response, should_raise) | |||
result = response.json() | |||
result_entity = Entity.parse_obj(result) | |||
result_entity = Entity.parse_obj(result.get("entity", {})) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it a bug fix? as until now we didn't passed the "entity"
key?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct
if not isinstance(resource.port.entity.mappings.identifier, str): | ||
logger.info("Skip unregistering due to non string identifier mapping") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing additional context for who this will be skipped ( which resource kind ).
and what would be the effect?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
# Set the results of the search relation and identifier to the entity | ||
entity.identifier = result_entity.identifier or entity.identifier | ||
if isinstance(entity.identifier, dict): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lets have a method inside of the entity class for knowing if its of type search identifier
port_ocean/core/models.py
Outdated
@@ -19,6 +19,10 @@ class Entity(BaseModel): | |||
properties: dict[str, Any] = {} | |||
relations: dict[str, Any] = {} | |||
|
|||
@property | |||
def is_search_identifier(self) -> bool: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def is_search_identifier(self) -> bool: | |
def is_using_search_identifier(self) -> bool: |
relations: dict[str, str | IngestSearchQuery] = Field(default_factory=dict) | ||
|
||
@property | ||
def is_search_identifier(self) -> bool: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def is_search_identifier(self) -> bool: | |
def is_using_search_identifier(self) -> bool: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very Nice!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🦢
Description
What - Add support for search identifier
Why - New feature to allow updating an entity without knowing its identifier
How - Call upsert entity API with query, and allow it in mapping
Type of change
Please leave one option from the following and delete the rest:
All tests should be run against the port production environment(using a testing org).
Core testing checklist
Integration testing checklist
examples
folder in the integration directory.Preflight checklist
Screenshots
Include screenshots from your environment showing how the resources of the integration will look.
API Documentation
Provide links to the API documentation used for this integration.