Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,6 @@ cython_debug/

# PyPI configuration file
.pypirc

# Jules agent files
.jules/
6 changes: 2 additions & 4 deletions templates/api/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,8 @@ def create_item() -> Response:
Returns:
201 with the created item, 422 on validation error, or 500 on error.
"""
body = app.current_event.json_body

try:
item = Item.model_validate(body)
item = Item.model_validate_json(app.current_event.body)
except ValidationError as exc:
return Response(status_code=422, content_type="application/json", body=dumps({"errors": loads(exc.json())}))

Expand All @@ -66,7 +64,7 @@ def create_item() -> Response:
status_code=500, content_type="application/json", body=dumps({"message": "Internal server error"})
)

return Response(status_code=201, content_type="application/json", body=dumps(item.dump()))
return Response(status_code=201, content_type="application/json", body=item.dump_json())


@logger.inject_lambda_context
Expand Down
5 changes: 5 additions & 0 deletions templates/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ def dump(self, **kwargs: Any) -> dict:
kwargs.setdefault("by_alias", True)
kwargs.setdefault("exclude_none", True)
return self.model_dump(**kwargs)

def dump_json(self, **kwargs: Any) -> str:
kwargs.setdefault("by_alias", True)
kwargs.setdefault("exclude_none", True)
return self.model_dump_json(**kwargs)
2 changes: 1 addition & 1 deletion templates/sqs/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def handle_record(self, record: SQSRecord) -> None:
ValueError: If the message body cannot be parsed or processed.
"""
try:
message = SqsMessage.model_validate(record.json_body)
message = SqsMessage.model_validate_json(record.body)
processed = ProcessedItem(id=message.id, content=message.content, status="PROCESSED")
self._repository.put_item(processed.model_dump())
logger.info("Successfully processed and stored message", extra={"messageId": message.id})
Expand Down
2 changes: 1 addition & 1 deletion tests/sqs/test_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ def test_handler_handle_record(repository):

handler = Handler(repository)
record = MagicMock()
record.json_body = {"id": "123", "content": "test content"}
record.body = dumps({"id": "123", "content": "test content"})

handler.handle_record(record)

Expand Down