📊 数据持久化阶段完成: - 完成4个数据模型的Hive集成(Book, Bookshelf, Bookmark, Highlight) - 实现4个Repository数据访问层 - 生成5个TypeAdapter自动序列化文件 - 完成所有模型的CRUD操作和测试验证 📚 项目文档更新: - 新增数据持久化阶段完成总结文档 - 更新CLAUDE.md项目主文档 - 完善项目结构说明和开发进度 🚀 UI开发阶段规划: - 定义产品定位:类似微信读书的Material Design电子书阅读器 - 制定4阶段开发计划:UI基础架构→顶部导航→首页内容→数据集成 - 明确页面结构:底部Tab导航(首页/书库/统计/我的) - 规划核心功能:搜索、导入、最近阅读、摘录列表 🎯 下一里程碑: - 开始UI基础架构搭建 - 实现底部Tab导航和Material Design主题系统 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
66 lines
1.7 KiB
Dart
66 lines
1.7 KiB
Dart
import 'package:readful/models/book.dart';
|
|
|
|
import '../models/bookmark.dart';
|
|
import 'database_service.dart';
|
|
|
|
class BookmarkRepository {
|
|
final DatabaseService _databaseService = DatabaseService.instance;
|
|
|
|
/// 获取所有书签
|
|
Future<List<Bookmark>> getAllBookmarks() async {
|
|
try {
|
|
final bookmarksBox = _databaseService.getBookmarksBox();
|
|
return bookmarksBox.values.toList();
|
|
} catch (e) {
|
|
print('❌ 获取所有书签失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 根据ID获取书签
|
|
Future<Bookmark?> getBookmarkById(String id) async {
|
|
try {
|
|
final bookmarksBox = _databaseService.getBookmarksBox();
|
|
return bookmarksBox.get(id);
|
|
} catch (e) {
|
|
print('❌ 根据ID获取书签失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 添加新书签
|
|
Future<void> addBookmark(Bookmark bookmark) async {
|
|
try {
|
|
final bookmarksBox = _databaseService.getBookmarksBox();
|
|
await bookmarksBox.put(bookmark.id, bookmark);
|
|
print('✅ 书签添加成功: ${bookmark.title}');
|
|
} catch (e) {
|
|
print('❌ 添加书签失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 更新书签信息
|
|
Future<void> updateBookmark(Bookmark bookmark) async {
|
|
try {
|
|
final bookmarksBox = _databaseService.getBookmarksBox();
|
|
await bookmarksBox.put(bookmark.id, bookmark);
|
|
print('✅ 书签更新成功: ${bookmark.title}');
|
|
} catch (e) {
|
|
print('❌ 更新书签失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
|
|
/// 删除书签
|
|
Future<void> deleteBookmark(String id) async {
|
|
try {
|
|
final bookmarksBox = _databaseService.getBookmarksBox();
|
|
await bookmarksBox.delete(id);
|
|
print('✅ 书签删除成功: $id');
|
|
} catch (e) {
|
|
print('❌ 删除书签失败: $e');
|
|
rethrow;
|
|
}
|
|
}
|
|
} |