Skip to content

feat(snapshot): add backend core for ZIP-based backup snapshots#1255

Merged
perber merged 3 commits into
mainfrom
feat/snapshot-backend-core
Jul 4, 2026
Merged

feat(snapshot): add backend core for ZIP-based backup snapshots#1255
perber merged 3 commits into
mainfrom
feat/snapshot-backend-core

Conversation

@perber

@perber perber commented Jul 2, 2026

Copy link
Copy Markdown
Owner

No description provided.

perber added 3 commits July 3, 2026 00:36
Implements internal/snapshot/ per plans/snapshot-1-backend-core.md:
VACUUM INTO for users.db, ZIP assembly of root/assets/branding/schema,
and a Manager with async trigger, status tracking, list, and delete.
No HTTP layer yet — pure business logic, covered by tests.
Align with the project convention (see internal/core/assets,
internal/branding, internal/core/revision, wikiresync) instead of
plain sentinel errors — snapshot_already_running, snapshot_not_found,
snapshot_invalid_id, snapshot_list_failed, snapshot_delete_failed.
…ck lint

Set a busy_timeout pragma on the VACUUM INTO connection so a snapshot
taken while an admin write (user create/update/delete) is in flight
waits the writer out instead of failing immediately with SQLITE_BUSY.
Covered by a test that holds an exclusive lock during the vacuum call.

Also wraps deferred Close()/RemoveAll() calls to discard their errors
explicitly, matching the rest of the codebase's errcheck-clean style.
@perber perber merged commit f0dd247 into main Jul 4, 2026
9 checks passed
@perber perber deleted the feat/snapshot-backend-core branch July 4, 2026 22:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant