exam.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import 'package:vital_local_database/core/interface/queryable.dart';
  2. import 'package:vital_local_database/core/sqlite/repository.dart';
  3. import 'package:vitalapp/database/db.dart';
  4. import 'package:vitalapp/database/entities/exam.dart';
  5. import 'interfaces/exam.dart';
  6. class ExamRepository extends BaseDbRepository<ExamEntity, ExamColumnsDefine>
  7. implements IExamRepository {
  8. ExamRepository(super.database);
  9. @override
  10. ExamEntity createEntityInstance() => ExamEntity();
  11. @override
  12. Future<ExamEntity?> singleByCodeWithUserCode(
  13. String code, String userCode) async {
  14. final entity = await db.repositories.exam.queryable
  15. .where((x) => [
  16. x.isValid.equals(true),
  17. x.userCode.equals(userCode),
  18. x.code.equals(code),
  19. ])
  20. .first();
  21. return entity;
  22. }
  23. @override
  24. Future<List<ExamEntity>> queryPatientAllList(
  25. String patientCode, String userCode,
  26. {List<String>? keys}) async {
  27. var query = db.repositories.exam.queryable.where((x) => [
  28. x.isValid.equals(true),
  29. x.userCode.equals(userCode),
  30. x.patientCode.equals(patientCode),
  31. ]);
  32. if (keys != null && keys.isNotEmpty) {
  33. query = query.and((x) => x.templateKey.inEqueals(keys));
  34. }
  35. final entities = await query.toList();
  36. return entities;
  37. }
  38. @override
  39. Future<DbPagedList<ExamEntity>> queryPatientPagedList(
  40. String patientCode, String userCode, int pageIndex,
  41. {int pageSize = 50}) async {
  42. var query = db.repositories.exam.queryable.where((x) => [
  43. x.isValid.equals(true),
  44. x.userCode.equals(userCode),
  45. x.patientCode.equals(patientCode),
  46. ]);
  47. final count = await query.count();
  48. final offset = pageSize * (pageIndex - 1);
  49. final entities = await query
  50. .orderBy((x) => x.updateTime, DbOrderByType.desc)
  51. .orderBy((x) => x.createTime, DbOrderByType.desc)
  52. .offset(offset)
  53. .limit(pageSize)
  54. .toList();
  55. final result = DbPagedList<ExamEntity>(
  56. data: entities,
  57. totalCount: count,
  58. pageIndex: pageIndex,
  59. pageSize: pageSize,
  60. );
  61. return result;
  62. }
  63. }