import 'package:get/get.dart'; import 'package:problem_check_system/data/models/problem_model.dart'; import 'package:problem_check_system/data/providers/connectivity_provider.dart'; import 'package:problem_check_system/data/providers/http_provider.dart'; import 'package:problem_check_system/data/providers/local_database.dart'; /// 问题仓库,负责处理问题数据的本地持久化。 /// 它封装了底层数据库操作,为业务逻辑层提供一个简洁的接口。 class ProblemRepository { final LocalDatabase localDatabase; final HttpProvider httpProvider; final ConnectivityProvider connectivityProvider; RxBool get isOnline => connectivityProvider.isOnline; ProblemRepository({ required this.localDatabase, required this.httpProvider, required this.connectivityProvider, }); /// 更新本地数据库中的一个问题。 /// 如果问题存在则更新,如果不存在则插入。 Future updateProblem(Problem problem) async { // 检查问题是否存在,通常通过ID判断 final existingProblem = await localDatabase.getProblemById(problem.id!); if (existingProblem != null) { // 问题已存在,执行更新操作 await localDatabase.updateProblem(problem); } else { // 问题不存在,执行插入操作 await localDatabase.insertProblem(problem); } } /// 通用查询方法,根据可选的筛选条件获取问题列表。 /// - `startDate`/`endDate`:筛选创建时间范围。 /// - `uploadStatus`:筛选上传状态('已上传', '未上传', '全部')。 /// - `bindStatus`:筛选绑定状态('已绑定', '未绑定', '全部')。 Future getProblems({ DateTime? startDate, DateTime? endDate, String uploadStatus = '全部', String bindStatus = '全部', }) async { return await localDatabase.getProblems( startDate: startDate, endDate: endDate, uploadStatus: uploadStatus, bindStatus: bindStatus, ); } Future insertProblem(Problem problem) async { await localDatabase.insertProblem(problem); } Future deleteProblem(String id) async { await localDatabase.deleteProblem(id); } }