Repository navigation
feat: export products as CSV or JSON - #349
Merged
Merged
Conversation
25 of 35 tasks
Deleting a product walks each component's parent at flush time. Whether an unloaded parent was still cached depended on garbage collection, so the delete could fail on the raise-on-lazy-load guard. Load it explicitly.
- add GET /v1/products/export with the list filters and GET /v1/products/{id}/export, capped at 100 base products with their components
- write CSV rows per product and component with release column names, owner usernames only for public profiles, and guarded formula cells
- rate-limit exports more strictly than reads, and accept text/csv on export routes
- add an export menu to the product page and the filtered product list
simonvanlierde
force-pushed
the
feat/product-export
branch
from
September 28, 2026 11:18
45934ca to
4d0c940
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
- cap component trees at 20 levels on create and export, and exports at 5,000 components, sharing one level walk between tree loaders - keep the validation-error schema on the export 422 responses - hide native "My products" export until exports save on the device - return focus from the export menu and failure dialog, mark the export button busy, and confirm a finished download - release the web download URL after the click - cover the CSV formula guard, nested deletes, authenticated export and search filters in tests - document the export size limits
… at 10 - return 400 for exports past the product, component or depth limits, and for too-deep component creation, so the 422 schema stays the validation error - lower the component depth limit to 10 levels - type the vendored button ref as its Pressable instance and attach the export menu ref directly
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.
Products can be exported from the product page, or as the current filtered results from the list, as CSV or JSON. The backend adds
GET /v1/products/export(the list's filters, capped at 100 base products plus their components) andGET /v1/products/{id}/export, with a stricter rate limit. The owner appears only when their profile is public, as on the product page. Bulk data stays with the dataset release; downloading everything you contributed is #343.Closes #115