mirror of
https://github.com/jamiepine/voicebox.git
synced 2026-09-16 05:10:42 -07:00
Walks the local store and maps it onto the cloud object model per the design doc: captures, generations (+ version wavs), profiles (+ samples, avatar), and the settings singletons. Records carry the full row (paths storage-relative so restores re-anchor under the destination data dir); audio travels as per-asset ciphertext blobs. Envelopes are randomized, so a new cloud_sync_state table remembers both the plaintext fingerprint (did content actually change?) and the ciphertext hash the server holds (re-declare unchanged blobs without re-encrypting or re-uploading). updated_at is excluded from fingerprints - its onupdate trigger fires as a side effect of applying pulls and would bounce synced objects otherwise. Push runs before pull; conflicts are last-writer-wins per object. Own pushes echoing back through the feed are recognized by ciphertext hash and skipped. Tests simulate two machines (own DB, data dir, keychain) syncing through an in-process fake cloud: full backup/restore with byte-identical audio, incremental edit (only the record blob re-uploads), delete propagation, LWW convergence, and the blindness check that server storage only ever holds VBX1 envelopes.
57 lines
1.1 KiB
Python
57 lines
1.1 KiB
Python
"""Database package — ORM models, session management, and migrations.
|
|
|
|
Re-exports all public symbols so that ``from .database import get_db``
|
|
and ``from .database import Generation as DBGeneration`` continue to work
|
|
without changing any importers.
|
|
"""
|
|
|
|
from .models import (
|
|
Base,
|
|
AudioChannel,
|
|
Capture,
|
|
CaptureSettings,
|
|
ChannelDeviceMapping,
|
|
CloudSettings,
|
|
CloudSyncState,
|
|
EffectPreset,
|
|
Generation,
|
|
GenerationSettings,
|
|
GenerationVersion,
|
|
MCPClientBinding,
|
|
ProfileChannelMapping,
|
|
ProfileSample,
|
|
Project,
|
|
Story,
|
|
StoryItem,
|
|
VoiceProfile,
|
|
)
|
|
from .session import engine, SessionLocal, _db_path, init_db, get_db
|
|
|
|
__all__ = [
|
|
# Models
|
|
"Base",
|
|
"AudioChannel",
|
|
"Capture",
|
|
"CaptureSettings",
|
|
"ChannelDeviceMapping",
|
|
"CloudSettings",
|
|
"CloudSyncState",
|
|
"EffectPreset",
|
|
"Generation",
|
|
"GenerationSettings",
|
|
"GenerationVersion",
|
|
"MCPClientBinding",
|
|
"ProfileChannelMapping",
|
|
"ProfileSample",
|
|
"Project",
|
|
"Story",
|
|
"StoryItem",
|
|
"VoiceProfile",
|
|
# Session
|
|
"engine",
|
|
"SessionLocal",
|
|
"_db_path",
|
|
"init_db",
|
|
"get_db",
|
|
]
|