feat: Implement SQLite infrastructure layer for persistent storage #10
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.
Summary
Implements a complete SQLite persistence layer for the Logseq application following the design outlined in PER-12. This provides durable, local-first storage for Page aggregates and their associated Block hierarchies.
Changes Made
1. Database Schema (
schema.rs)pages: Page metadata (id, title, timestamps)blocks: Block content with hierarchical parent_id referencesblock_children: Junction table for maintaining child orderurls: Extracted URLs from block contentpage_references: Page references and tags2. Repository Implementation (
sqlite_page_repository.rs)SqlitePageRepository: Complete implementation ofPageRepositorytraitDomainError3. Dependencies
rusqlitev0.32 with bundled SQLite for portability4. Testing
Test Results
All persistence tests pass, including:
test_block_hierarchy_preservedtest_urls_and_references_preservedtest_save_and_find_by_idtest_update_pageTechnical Highlights
block_childrentableQdrantVectorStoreNext Steps
🤖 Generated with Claude Code