Implement collection item reordering with bulk operations and persistent HTML attributes
- Add bulk reorder API endpoint (PUT /api/collections/{id}/reorder) with atomic transactions
- Replace individual position updates with efficient bulk operations in frontend
- Implement unified ID generation and proper data-item-id injection during enhancement
- Fix collection item position persistence through content edit cycles
- Add optimistic UI with rollback capability for better user experience
- Update sqlc queries to include last_edited_by fields in position updates
- Remove obsolete data-content-type attributes and unify naming conventions
This commit is contained in:
@@ -305,12 +305,13 @@ func (q *Queries) UpdateCollectionItem(ctx context.Context, arg UpdateCollection
|
||||
|
||||
const updateCollectionItemPosition = `-- name: UpdateCollectionItemPosition :exec
|
||||
UPDATE collection_items
|
||||
SET position = $1
|
||||
WHERE item_id = $2 AND collection_id = $3 AND site_id = $4
|
||||
SET position = $1, updated_at = CURRENT_TIMESTAMP, last_edited_by = $2
|
||||
WHERE item_id = $3 AND collection_id = $4 AND site_id = $5
|
||||
`
|
||||
|
||||
type UpdateCollectionItemPositionParams struct {
|
||||
Position int32 `json:"position"`
|
||||
LastEditedBy string `json:"last_edited_by"`
|
||||
ItemID string `json:"item_id"`
|
||||
CollectionID string `json:"collection_id"`
|
||||
SiteID string `json:"site_id"`
|
||||
@@ -319,6 +320,7 @@ type UpdateCollectionItemPositionParams struct {
|
||||
func (q *Queries) UpdateCollectionItemPosition(ctx context.Context, arg UpdateCollectionItemPositionParams) error {
|
||||
_, err := q.db.ExecContext(ctx, updateCollectionItemPosition,
|
||||
arg.Position,
|
||||
arg.LastEditedBy,
|
||||
arg.ItemID,
|
||||
arg.CollectionID,
|
||||
arg.SiteID,
|
||||
|
||||
Reference in New Issue
Block a user