followup.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import 'package:vital_local_database/index.dart';
  2. import 'package:vitalapp/database/entities/followup.dart';
  3. import 'interfaces/followup.dart';
  4. class FollowUpRepository
  5. extends BaseDbRepository<FollowUpEntity, FollowUpColumnsDefine>
  6. implements IFollowUpRepository {
  7. FollowUpRepository(super.database);
  8. @override
  9. FollowUpEntity createEntityInstance() => FollowUpEntity();
  10. @override
  11. Future<FollowUpEntity?> singleByCode(String code) async {
  12. final entity = await queryable
  13. .where((x) => [
  14. x.isValid.equals(true),
  15. x.code.equals(code),
  16. ])
  17. .first();
  18. return entity;
  19. }
  20. @override
  21. Future<List<FollowUpEntity>> queryAllListByPatient(
  22. String patientCode,
  23. String userCode, [
  24. String? followUpKey,
  25. ]) async {
  26. final query = queryable.where(
  27. (x) => [
  28. x.isValid.equals(true),
  29. x.userCode.equals(userCode),
  30. x.patientCode.equals(patientCode),
  31. if (followUpKey != null) x.typeKey.equals(followUpKey),
  32. ],
  33. );
  34. final list = await query
  35. .orderBy((x) => x.followUpTime, DbOrderByType.desc) // 按随访时间倒序
  36. .toList();
  37. return list;
  38. }
  39. @override
  40. Future<DbPagedList<FollowUpEntity>> queryPagedListByPatient(
  41. String patientCode,
  42. String userCode,
  43. int pageIndex, {
  44. int pageSize = 50,
  45. }) async {
  46. final offset = pageSize * (pageIndex - 1);
  47. var query = queryable.where(
  48. (x) => [
  49. x.isValid.equals(true),
  50. x.userCode.equals(userCode),
  51. x.patientCode.equals(patientCode),
  52. ],
  53. );
  54. final count = await query.count();
  55. final list = await query
  56. .orderBy((x) => x.followUpTime, DbOrderByType.desc) // 按随访时间倒序
  57. .offset(offset)
  58. .limit(pageSize)
  59. .toList();
  60. final result = DbPagedList<FollowUpEntity>(
  61. data: list,
  62. totalCount: count,
  63. pageIndex: pageIndex,
  64. pageSize: pageSize,
  65. );
  66. return result;
  67. }
  68. }