Files
nj/app/lib/data/local/collections/pending_operation_collection.dart
iven 2481c8fce6 feat(app): Isar 本地数据库集成 — Collection + Repository + 编辑器持久化 + SyncEngine 队列
新增文件:
- data/local/collections/ 3 个 Isar Collection 定义 + 生成 Schema
- data/repositories/isar_journal_repository.dart 完整 CRUD + 乐观锁

修改文件:
- app.dart: IsarJournalRepository 注册为主 JournalRepository + SyncEngine 注入
- editor_page.dart: onSave 接入 JournalRepository,笔画/元素自动保存到 Isar
- sync_engine.dart: 新增 persistPendingQueue/restorePendingQueue Isar 持久化
- isar_database.dart: 注册 3 个 Collection Schema
- main.dart: 启动时初始化 Isar

架构: 离线优先 — Isar 为本地主仓库,Remote 供 SyncEngine 推送
2026-06-01 14:41:40 +08:00

37 lines
844 B
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 待同步操作 Isar Collection — SyncEngine 队列持久化
//
// 应用退出时将内存队列写入 Isar下次启动时恢复。
// 保证离线操作不会因进程终止而丢失。
import 'package:isar/isar.dart';
part 'pending_operation_collection.g.dart';
@collection
class PendingOperationCollection {
/// Isar 自增主键
Id isarId = Isar.autoIncrement;
/// 业务 UUID索引
@Index()
String id = '';
/// 操作类型create / update / delete
String operationType = 'create';
/// API 端点(如 '/diary/journals'
String endpoint = '';
/// 请求负载JSON String
String dataJson = '{}';
/// 资源版本号(乐观锁)
int version = 1;
/// 创建时间epoch milliseconds
int createdAtEpoch = 0;
/// 重试次数(最大 5 次)
int retryCount = 0;
}