From 8f46485e23adb8471698e42bdeebf0c097ffc409 Mon Sep 17 00:00:00 2001 From: Abdulrahman Alrahma Date: Tue, 7 Jan 2025 16:17:53 +0300 Subject: [PATCH 1/2] \#4466 Show endpoint url in event log table --- server/polar/models/webhook_delivery.py | 5 +++++ server/polar/webhook/schemas.py | 3 +++ server/polar/webhook/service.py | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/server/polar/models/webhook_delivery.py b/server/polar/models/webhook_delivery.py index 32a22b5867..c2c9a8ba4f 100644 --- a/server/polar/models/webhook_delivery.py +++ b/server/polar/models/webhook_delivery.py @@ -5,6 +5,7 @@ from polar.kit.db.models.base import RecordModel from polar.models.webhook_event import WebhookEvent +from polar.models.webhook_endpoint import WebhookEndpoint class WebhookDelivery(RecordModel): @@ -17,6 +18,10 @@ class WebhookDelivery(RecordModel): index=True, ) + @declared_attr + def webhook_endpoint(cls) -> Mapped[WebhookEndpoint]: + return relationship("WebhookEndpoint", lazy="raise") + webhook_event_id: Mapped[UUID] = mapped_column( Uuid, ForeignKey("webhook_events.id", ondelete="CASCADE"), diff --git a/server/polar/webhook/schemas.py b/server/polar/webhook/schemas.py index e0404a1f69..43d75ef46d 100644 --- a/server/polar/webhook/schemas.py +++ b/server/polar/webhook/schemas.py @@ -128,3 +128,6 @@ class WebhookDelivery(TimestampedSchema): webhook_event: WebhookEvent = Field( description="The webhook event sent by this delivery." ) + webhook_endpoint: WebhookEndpoint = Field( + description="The webhook endpoint called by this delivery." + ) diff --git a/server/polar/webhook/service.py b/server/polar/webhook/service.py index 86e747dfd5..bb36d5a492 100644 --- a/server/polar/webhook/service.py +++ b/server/polar/webhook/service.py @@ -195,7 +195,10 @@ async def list_deliveries( readable_endpoints_statement.with_only_columns(WebhookEndpoint.id) ), ) - .options(joinedload(WebhookDelivery.webhook_event)) + .options( + contains_eager(WebhookDelivery.webhook_endpoint), + joinedload(WebhookDelivery.webhook_event), + ) .order_by(desc(WebhookDelivery.created_at)) ) From 51389cc712ecdbb2a990253b3e7ed628e51ce51c Mon Sep 17 00:00:00 2001 From: Abdulrahman Alrahma Date: Tue, 7 Jan 2025 16:40:50 +0300 Subject: [PATCH 2/2] testing that webhook endpoint is being returned --- server/tests/webhooks/test_endpoints.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/server/tests/webhooks/test_endpoints.py b/server/tests/webhooks/test_endpoints.py index a1ffe8e26b..a1a558964e 100644 --- a/server/tests/webhooks/test_endpoints.py +++ b/server/tests/webhooks/test_endpoints.py @@ -250,6 +250,12 @@ async def test_user( json = response.json() assert len(json["items"]) == 1 assert json["items"][0]["id"] == str(webhook_delivery.id) + assert json["items"][0]["webhook_endpoint"]["id"] == str( + webhook_endpoint_organization.id + ) + assert json["items"][0]["webhook_endpoint"]["url"] == str( + webhook_endpoint_organization.url + ) @pytest.mark.auth( AuthSubjectFixture(subject="organization", scopes={Scope.webhooks_write}) @@ -266,3 +272,9 @@ async def test_organization( json = response.json() assert len(json["items"]) == 1 assert json["items"][0]["id"] == str(webhook_delivery.id) + assert json["items"][0]["webhook_endpoint"]["id"] == str( + webhook_endpoint_organization.id + ) + assert json["items"][0]["webhook_endpoint"]["url"] == str( + webhook_endpoint_organization.url + )