feat: SQS batch operations and queue management (#72)#106
Merged
DaviReisVieira merged 16 commits intomainfrom Apr 25, 2026
Merged
feat: SQS batch operations and queue management (#72)#106DaviReisVieira merged 16 commits intomainfrom
DaviReisVieira merged 16 commits intomainfrom
Conversation
…batch-operations-and-queue-management
- Fix DLQ ARN bug: fetch ARN via get_queue_attributes after create_queue - Remove redundant get_queue_url call in DLQ existence check - Fix EditSettingsSheet copy-paste corruption (leaked deleteSQSMessage code) - Fix null redrive policy causing 400 when DLQ disabled - Replace window.confirm/prompt with Sheet-based confirmation dialogs - Pass FIFO params (messageGroupId, deduplicationId) through batch send - Remove redundant .filter() on paginatedQueues - Fix missing TagIcon import - Add 3 DLQ auto-creation tests (standard, FIFO, existing DLQ reuse) - Update existing create_queue tests for new get_queue_attributes flow
Move all request/response models from route files into dedicated per-service schema modules (sqs, s3, dynamodb, tags). Route files now import schemas instead of defining them inline, preparing for OpenAPI typing across all services.
Split SQSBrowser.tsx (3100 lines) into 12 focused sub-components under sqs/ directory: sheets, confirm dialogs, queue card, badges, pagination, and shared utilities. Deduplicate queue card JSX into a single QueueCard component with showExtendedStats prop.
Replace multi-column card grid with single-column rows matching the S3 browser pattern. Each queue shows icon, name, badges on the left and stats (messages, in-flight, retention) with a chevron on the right. Favorite star is always visible.
- Collapse 5 action buttons into 2 primary + dropdown overflow menu - Messages table: border wrapper, hover rows, Checkbox component - Favorites table: icon-only buttons with tooltips - Configuration tab: description-list style with dividers - Single-column queue list layout matching S3 browser
Add missing endpoint_url dependency injection to 6 backend endpoints (create, delete, update, batch send/delete, redrive) and propagate activeEndpoint through all frontend API calls and sub-components. Fixes multi-endpoint support for SQS writes.
- Filter favorite messages by sourceQueue so each queue shows only its own - Pass queueName to CreateFavoriteSheet so new favorites get sourceQueue set - Clear selectedMessages on peek to prevent stale selection buttons - Remove deleted message from selectedMessages when deleted via viewer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements full SQS queue management in StackPort — create/delete queues (Standard & FIFO), batch message operations (send/delete), queue attributes editing, DLQ auto-creation, favorites system, and a polished custom UI. Compatible with LocalStack, MiniStack, Moto, or any AWS-compatible endpoint.
Closes #72. Supersedes #96 (cross-fork PR had stale CI targeting).
What changed
Backend
backend/routes/sqs.py: full CRUD for queues, messages (single + batch), purge, attributes, redrive policybackend/schemas/package (sqs, s3, dynamodb, tags) — prepares for future OpenAPI typing?endpoint=query param viaDepends(get_endpoint_url)Frontend
sqs/sub-components (QueueCard, CreateQueueSheet, EditSettingsSheet, BatchSendSheet, ConfirmSheets, etc.)activeEndpointfromuseEndpointhookTests
Test plan
.fifoauto-append)pytest tests/test_sqs_routes.py -v(34 tests)cd ui && npx tsc -b(zero errors)