import 'package:sembast/sembast_io.dart'; import 'dart:async'; abstract class SemDbMgrBase { final Database database; abstract final String repositoryName; SemDbMgrBase(this.database); // 获取存储 StoreRef> get storeRef { return StoreRef>(repositoryName); } // 转换对象为Map Map toMap(T item); // 从Map创建对象 T fromMap(Map map); // 添加或更新记录 Future addOrUpdate(T item, {String? id}) async { final itemMap = toMap(item); final recordId = id ?? DateTime.now().millisecondsSinceEpoch.toString(); await storeRef.record(recordId).put(database, itemMap); return recordId; } // 获取所有记录 Future> getAll() async { final records = await storeRef.find(database); return records.map((record) => fromMap(record.value)).toList(); } // 根据ID获取记录 Future getById(String id) async { final record = await storeRef.record(id).get(database); return record != null ? fromMap(record) : null; } // 删除记录 Future delete(String id) async { await storeRef.record(id).delete(database); } // 清空存储 Future clear() async { await storeRef.delete(database); } }