HospitalRepository.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. const prisma = require('../../prisma/PrismaClient.js');
  2. const HospitalRepository = {
  3. findAll: async ({ skip, take, where, orderBy }) => {
  4. return await prisma.hospital.findMany({
  5. where,
  6. skip,
  7. take,
  8. orderBy,
  9. select: {
  10. id: true,
  11. name: true,
  12. hospital_code: true,
  13. type: true,
  14. ownership: true,
  15. province: { select: { id: true, name: true } },
  16. city: { select: { id: true, name: true } },
  17. address: true,
  18. simrs_type: true,
  19. contact: true,
  20. image: true,
  21. progress_status: true,
  22. note: true,
  23. user: { select: { id: true, username: true } },
  24. createdAt: true,
  25. updatedAt: true,
  26. // vendor_histories: {
  27. // where: { deletedAt: null },
  28. // orderBy: { createdAt: 'desc' },
  29. // select: {
  30. // vendor: {
  31. // select: {
  32. // id: true,
  33. // name: true,
  34. // name_pt: true,
  35. // strengths: true,
  36. // weaknesses: true,
  37. // website: true,
  38. // }
  39. // }
  40. // }
  41. // }
  42. }
  43. });
  44. },
  45. countAll: async (where) => {
  46. return prisma.hospital.count({ where });
  47. },
  48. findById: async (id) => {
  49. return prisma.hospital.findFirst({
  50. where: {
  51. id,
  52. deletedAt: null
  53. },
  54. select: {
  55. id: true,
  56. name: true,
  57. hospital_code: true,
  58. type: true,
  59. ownership: true,
  60. province: { select: { id: true, name: true } },
  61. city: { select: { id: true, name: true } },
  62. address: true,
  63. simrs_type: true,
  64. contact: true,
  65. image: true,
  66. progress_status: true,
  67. note: true,
  68. user: { select: { id: true, username: true } },
  69. createdAt: true,
  70. updatedAt: true,
  71. // vendor_histories: {
  72. // where: { deletedAt: null },
  73. // orderBy: { createdAt: 'desc' },
  74. // select: {
  75. // vendor: {
  76. // select: {
  77. // id: true,
  78. // name: true,
  79. // name_pt: true,
  80. // strengths: true,
  81. // weaknesses: true,
  82. // website: true,
  83. // }
  84. // }
  85. // }
  86. // }
  87. }
  88. });
  89. },
  90. create: async (data) => {
  91. return prisma.hospital.create({ data });
  92. },
  93. update: async (id, data) => {
  94. return prisma.hospital.update({
  95. where: { id },
  96. data: {
  97. name: data.name,
  98. hospital_code: data.hospital_code,
  99. type: data.type,
  100. ownership: data.ownership,
  101. province: { connect: { id: data.province_id } },
  102. city: { connect: { id: data.city_id } },
  103. address: data.address,
  104. // simrs_type: data.simrs_type,
  105. contact: data.contact,
  106. note: data.note,
  107. image: data.image,
  108. progress_status: data.progress_status,
  109. }
  110. });
  111. },
  112. };
  113. module.exports = HospitalRepository;