feat(frame): duplicate a frame via POST /:id/duplicate (#46) #47
Loading…
Reference in a new issue
No description provided.
Delete branch "develop"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Promotes #46 from develop to main.
Adds the
POST /frame/:id/duplicateendpoint - atomic transactional copy of a frame plus its optionalframe_locationrow, into the same shoot. Source frame is locked withFOR UPDATE; shoot row is locked the same way forMAX(number) + 1. Rejects on a done shoot (400), other user's frame (404), unknown id (404).Also includes a
refactor(import)cleanup pullingcommit()andcommitData()into focused helpers, and a small refactor pass onframe.service.tsextractinggetNextFrameNumber,loadOwnedFrameOrThrow,lockShootAndAssertOpen,copyFrameLocation,shootChangeTarget, andprepareShootMove. Driven by the fallow CRAP gate; behavior is unchanged.Tests: 100/100 integration. Lint clean.
Generated with Claude Code (https://claude.com/claude-code)