You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.2 KiB
62 lines
2.2 KiB
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 extends GetxService { |
|
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<void> 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<void> insertProblem(Problem problem) async { |
|
await localDatabase.insertProblem(problem); |
|
} |
|
|
|
Future<void> deleteProblem(String id) async { |
|
await localDatabase.deleteProblem(id); |
|
} |
|
}
|
|
|