feat(voice): add deleted_at to VoiceCallRecord - #46
Merged
Conversation
Carries the call-delete tombstone. Calls are otherwise immutable one-way pushes; this is the one exception, because a hard DELETE can't sync under a push-the-row model — so a delete rides as an ordinary upsert with deletedAt set, same as the account tombstone already does. Two things a consumer needs to know, documented on the field: the platform treats this tombstone as *sticky* (COALESCE, not last-write-wins — a call has no updatedAt to resolve on), so re-syncing with None can never undelete; and deleting also destroys the recording bytes, the transcript, and any live share link, not just the flag. VoiceCallsQuery gains includeDeleted so a device can pull tombstones and reap its local copies. Step 2 of the three-repo train — wavekat-platform accepts the field already; wavekat-voice needs a release of this before it can build. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EEyoayhGVRqCCY9BWJTKDD
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.
Step 2 of the call-delete train. The release is the deliverable — wavekat-voice can't build against this from git, so this needs a 0.0.23 cut before that PR can land.
Adds
deleted_attoVoiceCallRecordandinclude_deletedtoVoiceCallsQuery.Calls are otherwise immutable one-way pushes; the tombstone is the one exception, because a hard
DELETEcan't sync under a push-the-row model — once the row is gone there's nothing left to push. So a delete rides as an ordinary upsert withdeletedAtset, exactly asVoiceAccountRecordalready does.Two things documented on the field because a consumer will get them wrong otherwise:
updated_atto resolve on — delete is its only mutation — so the platform resolves the columnCOALESCE(existing, incoming). Re-syncing the row withNonecan never undelete it. (This is why re-shipping is safe, not merely idempotent.)include_deletedis the delta-pull flag a device sets to reap local copies. Unlike the accounts equivalent there's no "restore a fresh device" use for it — a tombstoned call has had its content destroyed, so the only thing left to learn is that it's gone.Platform side (accepts the field already): wavekat/wavekat-platform#186 + #187, design in that repo's docs/22.
4 new tests: tombstone serializes, a live call omits the key entirely rather than sending
null, a live call parses with the field absent and withnull, and the query flag round-trips.🤖 Generated with Claude Code
https://claude.ai/code/session_01EEyoayhGVRqCCY9BWJTKDD