- Add enhanced AssetManager with database integration and usage tracking - Implement Asset model with from_dict/to_dict conversion methods - Add resolve_asset_references() for linking discovered assets to imports - Integrate AssetDatabase with enhanced schema and performance indexes - Fix database schema constraints and test compatibility issues - Add list_assets_as_objects() method for dict-to-object migration - Resolve 91% of asset management tests (51/56 passing) Key features: * Content-addressable asset storage with deduplication * Database-backed usage statistics and processing logs * Asset reference resolution from markdown files * Enhanced performance with indexing and caching * Object-oriented Asset model with backwards compatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1.8 KiB
1.8 KiB
Asset Model Migration Plan
Goal
Convert from dict-based asset representation to object-based Asset model for better type safety and test compatibility.
Current State
AssetRegistry.list_assets()returnsList[Dict[str, Any]]- Tests expect
List[Asset]with attributes likeasset.filename - Multiple inconsistent field names:
content_hashvshash,size_bytesvssize
Migration Strategy
Phase 1: Add Model Support (Non-Breaking)
- ✅ Create
Assetdataclass withfrom_dict()andto_dict()methods - Add
AssetRegistry.list_assets_as_objects()method - Update tests to use new method
Phase 2: Gradual Migration
- Update
AssetManagerto returnAssetobjects - Update CLI commands to use object interface
- Update analytics and discovery modules
Phase 3: Storage Migration
- Update registry storage format (optional - can keep dict storage)
- Remove old methods
- Update all remaining code
Implementation Steps
1. Update AssetRegistry
def list_assets_as_objects(self) -> List[Asset]:
"""List all assets as Asset objects."""
asset_dicts = self.list_assets()
return [Asset.from_dict(asset_dict) for asset_dict in asset_dicts]
2. Update AssetManager
def list_assets(self) -> List[Asset]:
"""List all assets with enhanced information."""
return self.registry.list_assets_as_objects()
3. Update Tests
- Change
[asset.filename for asset in assets]to work with objects - Update assertions to use object attributes
Benefits After Migration
- ✅ Type safety and IDE support
- ✅ Test compatibility
- ✅ Cleaner, more maintainable code
- ✅ Future extensibility (methods, computed properties)
Risks
- Temporary complexity during migration
- Need to ensure backward compatibility during transition