@bonifaceebuka/core-backend 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/Readme.md +33 -0
  2. package/dist/app.js +59 -0
  3. package/dist/common/configs/axios.d.ts +7 -0
  4. package/dist/common/configs/axios.d.ts.map +1 -0
  5. package/dist/common/configs/axios.js +26 -0
  6. package/dist/common/configs/cloudinary.d.ts +3 -0
  7. package/dist/common/configs/cloudinary.d.ts.map +1 -0
  8. package/dist/common/configs/cloudinary.js +10 -0
  9. package/dist/common/configs/cors.d.ts +8 -0
  10. package/dist/common/configs/cors.d.ts.map +1 -0
  11. package/dist/common/configs/cors.js +23 -0
  12. package/dist/common/configs/express.js +29 -0
  13. package/dist/common/configs/index.d.ts +111 -0
  14. package/dist/common/configs/index.d.ts.map +1 -0
  15. package/dist/common/configs/index.js +168 -0
  16. package/dist/common/configs/logger.d.ts +3 -0
  17. package/dist/common/configs/logger.d.ts.map +1 -0
  18. package/dist/common/configs/logger.js +66 -0
  19. package/dist/common/configs/mailing.d.ts +4 -0
  20. package/dist/common/configs/mailing.d.ts.map +1 -0
  21. package/dist/common/configs/mailing.js +22 -0
  22. package/dist/common/configs/plans.d.ts +15 -0
  23. package/dist/common/configs/plans.d.ts.map +1 -0
  24. package/dist/common/configs/plans.js +17 -0
  25. package/dist/common/configs/postgres.d.ts +4 -0
  26. package/dist/common/configs/postgres.d.ts.map +1 -0
  27. package/dist/common/configs/postgres.js +25 -0
  28. package/dist/common/configs/redis.d.ts +5 -0
  29. package/dist/common/configs/redis.d.ts.map +1 -0
  30. package/dist/common/configs/redis.js +78 -0
  31. package/dist/common/configs/sendgrid.d.ts +3 -0
  32. package/dist/common/configs/sendgrid.d.ts.map +1 -0
  33. package/dist/common/configs/sendgrid.js +21 -0
  34. package/dist/common/configs/websocket.js +17 -0
  35. package/dist/common/constants/chat.d.ts +18 -0
  36. package/dist/common/constants/chat.d.ts.map +1 -0
  37. package/dist/common/constants/chat.js +20 -0
  38. package/dist/common/constants/messages/admin.messages.d.ts +33 -0
  39. package/dist/common/constants/messages/admin.messages.d.ts.map +1 -0
  40. package/dist/common/constants/messages/admin.messages.js +35 -0
  41. package/dist/common/constants/messages/index.d.ts +19 -0
  42. package/dist/common/constants/messages/index.d.ts.map +1 -0
  43. package/dist/common/constants/messages/index.js +21 -0
  44. package/dist/common/constants/messages/user.messages.d.ts +33 -0
  45. package/dist/common/constants/messages/user.messages.d.ts.map +1 -0
  46. package/dist/common/constants/messages/user.messages.js +35 -0
  47. package/dist/common/dtos/AdminDto.d.ts +5 -0
  48. package/dist/common/dtos/AdminDto.d.ts.map +1 -0
  49. package/dist/common/dtos/AdminDto.js +30 -0
  50. package/dist/common/dtos/ArticleDto.d.ts +11 -0
  51. package/dist/common/dtos/ArticleDto.d.ts.map +1 -0
  52. package/dist/common/dtos/ArticleDto.js +61 -0
  53. package/dist/common/dtos/BusinessDto.d.ts +12 -0
  54. package/dist/common/dtos/BusinessDto.d.ts.map +1 -0
  55. package/dist/common/dtos/BusinessDto.js +59 -0
  56. package/dist/common/dtos/ChatDto.d.ts +17 -0
  57. package/dist/common/dtos/ChatDto.d.ts.map +1 -0
  58. package/dist/common/dtos/ChatDto.js +89 -0
  59. package/dist/common/dtos/CommonDto.d.ts +13 -0
  60. package/dist/common/dtos/CommonDto.d.ts.map +1 -0
  61. package/dist/common/dtos/CommonDto.js +59 -0
  62. package/dist/common/dtos/CommunityDto.d.ts +10 -0
  63. package/dist/common/dtos/CommunityDto.d.ts.map +1 -0
  64. package/dist/common/dtos/CommunityDto.js +72 -0
  65. package/dist/common/dtos/EventDto.d.ts +24 -0
  66. package/dist/common/dtos/EventDto.d.ts.map +1 -0
  67. package/dist/common/dtos/EventDto.js +72 -0
  68. package/dist/common/dtos/IPaginator.d.ts +15 -0
  69. package/dist/common/dtos/IPaginator.d.ts.map +1 -0
  70. package/dist/common/dtos/IPaginator.js +40 -0
  71. package/dist/common/dtos/Paginator.d.ts +15 -0
  72. package/dist/common/dtos/Paginator.d.ts.map +1 -0
  73. package/dist/common/dtos/Paginator.js +40 -0
  74. package/dist/common/dtos/Plan.dto.d.ts +10 -0
  75. package/dist/common/dtos/Plan.dto.d.ts.map +1 -0
  76. package/dist/common/dtos/Plan.dto.js +66 -0
  77. package/dist/common/dtos/PostDto.d.ts +13 -0
  78. package/dist/common/dtos/PostDto.d.ts.map +1 -0
  79. package/dist/common/dtos/PostDto.js +75 -0
  80. package/dist/common/dtos/ProductDto.d.ts +13 -0
  81. package/dist/common/dtos/ProductDto.d.ts.map +1 -0
  82. package/dist/common/dtos/ProductDto.js +66 -0
  83. package/dist/common/dtos/ServiceDto.d.ts +19 -0
  84. package/dist/common/dtos/ServiceDto.d.ts.map +1 -0
  85. package/dist/common/dtos/ServiceDto.js +93 -0
  86. package/dist/common/dtos/UserDto.d.ts +70 -0
  87. package/dist/common/dtos/UserDto.d.ts.map +1 -0
  88. package/dist/common/dtos/UserDto.js +313 -0
  89. package/dist/common/enums/ChatEnum.d.ts +6 -0
  90. package/dist/common/enums/ChatEnum.d.ts.map +1 -0
  91. package/dist/common/enums/ChatEnum.js +9 -0
  92. package/dist/common/enums/CommunityEnum.d.ts +14 -0
  93. package/dist/common/enums/CommunityEnum.d.ts.map +1 -0
  94. package/dist/common/enums/CommunityEnum.js +19 -0
  95. package/dist/common/enums/ConnectionEnum.d.ts +11 -0
  96. package/dist/common/enums/ConnectionEnum.d.ts.map +1 -0
  97. package/dist/common/enums/ConnectionEnum.js +15 -0
  98. package/dist/common/enums/EventEnum.d.ts +7 -0
  99. package/dist/common/enums/EventEnum.d.ts.map +1 -0
  100. package/dist/common/enums/EventEnum.js +10 -0
  101. package/dist/common/enums/IndexEnum.d.ts +56 -0
  102. package/dist/common/enums/IndexEnum.d.ts.map +1 -0
  103. package/dist/common/enums/IndexEnum.js +67 -0
  104. package/dist/common/enums/MarketplaceEnum.d.ts +9 -0
  105. package/dist/common/enums/MarketplaceEnum.d.ts.map +1 -0
  106. package/dist/common/enums/MarketplaceEnum.js +13 -0
  107. package/dist/common/enums/NotificationEnum.d.ts +7 -0
  108. package/dist/common/enums/NotificationEnum.d.ts.map +1 -0
  109. package/dist/common/enums/NotificationEnum.js +10 -0
  110. package/dist/common/enums/TransactionEnum.d.ts +9 -0
  111. package/dist/common/enums/TransactionEnum.d.ts.map +1 -0
  112. package/dist/common/enums/TransactionEnum.js +13 -0
  113. package/dist/common/enums/UploadEnum.d.ts +15 -0
  114. package/dist/common/enums/UploadEnum.d.ts.map +1 -0
  115. package/dist/common/enums/UploadEnum.js +19 -0
  116. package/dist/common/enums/UserEnums.d.ts +36 -0
  117. package/dist/common/enums/UserEnums.d.ts.map +1 -0
  118. package/dist/common/enums/UserEnums.js +44 -0
  119. package/dist/common/enums/index.d.ts +65 -0
  120. package/dist/common/enums/index.d.ts.map +1 -0
  121. package/dist/common/enums/index.js +90 -0
  122. package/dist/common/errors/AppError.d.ts +6 -0
  123. package/dist/common/errors/AppError.d.ts.map +1 -0
  124. package/dist/common/errors/AppError.js +14 -0
  125. package/dist/common/types/HttpType.d.ts +11 -0
  126. package/dist/common/types/HttpType.d.ts.map +1 -0
  127. package/dist/common/types/HttpType.js +47 -0
  128. package/dist/common/types/IPagination.d.ts +15 -0
  129. package/dist/common/types/IPagination.d.ts.map +1 -0
  130. package/dist/common/types/IPagination.js +2 -0
  131. package/dist/common/types/Isocket.d.ts +6 -0
  132. package/dist/common/types/Isocket.d.ts.map +1 -0
  133. package/dist/common/types/Isocket.js +2 -0
  134. package/dist/common/types/chatType.d.ts +36 -0
  135. package/dist/common/types/chatType.d.ts.map +1 -0
  136. package/dist/common/types/chatType.js +2 -0
  137. package/dist/common/types/index.d.ts +6 -0
  138. package/dist/common/types/index.d.ts.map +1 -0
  139. package/dist/common/types/index.js +21 -0
  140. package/dist/common/types/mail.d.ts +7 -0
  141. package/dist/common/types/mail.d.ts.map +1 -0
  142. package/dist/common/types/mail.js +2 -0
  143. package/dist/common/types/uploadsType.d.ts +14 -0
  144. package/dist/common/types/uploadsType.d.ts.map +1 -0
  145. package/dist/common/types/uploadsType.js +45 -0
  146. package/dist/common/utils/axios.js +26 -0
  147. package/dist/common/utils/index.d.ts +28 -0
  148. package/dist/common/utils/index.d.ts.map +1 -0
  149. package/dist/common/utils/index.js +159 -0
  150. package/dist/common/utils/mailing.d.ts +2 -0
  151. package/dist/common/utils/mailing.d.ts.map +1 -0
  152. package/dist/common/utils/mailing.js +76 -0
  153. package/dist/common/utils/number_utils.d.ts +3 -0
  154. package/dist/common/utils/number_utils.d.ts.map +1 -0
  155. package/dist/common/utils/number_utils.js +10 -0
  156. package/dist/common/utils/responseHandlers.d.ts +44 -0
  157. package/dist/common/utils/responseHandlers.d.ts.map +1 -0
  158. package/dist/common/utils/responseHandlers.js +49 -0
  159. package/dist/common/utils/security.d.ts +7 -0
  160. package/dist/common/utils/security.d.ts.map +1 -0
  161. package/dist/common/utils/security.js +44 -0
  162. package/dist/common/utils/socket.js +16 -0
  163. package/dist/common/utils/validator.d.ts +6 -0
  164. package/dist/common/utils/validator.d.ts.map +1 -0
  165. package/dist/common/utils/validator.js +43 -0
  166. package/dist/database/migrations/1765969273227-create-base-migrations.d.ts +7 -0
  167. package/dist/database/migrations/1765969273227-create-base-migrations.d.ts.map +1 -0
  168. package/dist/database/migrations/1765969273227-create-base-migrations.js +53 -0
  169. package/dist/database/migrations/1765981653813-modify-users-table.d.ts +7 -0
  170. package/dist/database/migrations/1765981653813-modify-users-table.d.ts.map +1 -0
  171. package/dist/database/migrations/1765981653813-modify-users-table.js +19 -0
  172. package/dist/database/migrations/1766478443902-create_step_one_form_data_tables.d.ts +7 -0
  173. package/dist/database/migrations/1766478443902-create_step_one_form_data_tables.d.ts.map +1 -0
  174. package/dist/database/migrations/1766478443902-create_step_one_form_data_tables.js +79 -0
  175. package/dist/database/migrations/1766482587930-create_speeches_table.d.ts +7 -0
  176. package/dist/database/migrations/1766482587930-create_speeches_table.d.ts.map +1 -0
  177. package/dist/database/migrations/1766482587930-create_speeches_table.js +91 -0
  178. package/dist/database/migrations/1766486689085-create_challenges_and_education_table.d.ts +7 -0
  179. package/dist/database/migrations/1766486689085-create_challenges_and_education_table.d.ts.map +1 -0
  180. package/dist/database/migrations/1766486689085-create_challenges_and_education_table.js +21 -0
  181. package/dist/database/migrations/1766488441761-create_goals_table.d.ts +7 -0
  182. package/dist/database/migrations/1766488441761-create_goals_table.d.ts.map +1 -0
  183. package/dist/database/migrations/1766488441761-create_goals_table.js +13 -0
  184. package/dist/database/migrations/1766596709454-events_related_tables.d.ts +7 -0
  185. package/dist/database/migrations/1766596709454-events_related_tables.d.ts.map +1 -0
  186. package/dist/database/migrations/1766596709454-events_related_tables.js +27 -0
  187. package/dist/database/migrations/1767290352669-changed_country_to_location_events_table.d.ts +7 -0
  188. package/dist/database/migrations/1767290352669-changed_country_to_location_events_table.d.ts.map +1 -0
  189. package/dist/database/migrations/1767290352669-changed_country_to_location_events_table.js +47 -0
  190. package/dist/database/migrations/1767290877959-indexed_users_table.d.ts +7 -0
  191. package/dist/database/migrations/1767290877959-indexed_users_table.d.ts.map +1 -0
  192. package/dist/database/migrations/1767290877959-indexed_users_table.js +13 -0
  193. package/dist/database/migrations/1767291527448-indexed_tables.d.ts +7 -0
  194. package/dist/database/migrations/1767291527448-indexed_tables.d.ts.map +1 -0
  195. package/dist/database/migrations/1767291527448-indexed_tables.js +71 -0
  196. package/dist/database/migrations/1767292081954-added_event_venue_column_to_events_table.d.ts +7 -0
  197. package/dist/database/migrations/1767292081954-added_event_venue_column_to_events_table.d.ts.map +1 -0
  198. package/dist/database/migrations/1767292081954-added_event_venue_column_to_events_table.js +13 -0
  199. package/dist/database/migrations/1767369618268-create_billings_related_table.d.ts +7 -0
  200. package/dist/database/migrations/1767369618268-create_billings_related_table.d.ts.map +1 -0
  201. package/dist/database/migrations/1767369618268-create_billings_related_table.js +45 -0
  202. package/dist/database/migrations/1767404043438-create_billings_related_tables.d.ts +7 -0
  203. package/dist/database/migrations/1767404043438-create_billings_related_tables.d.ts.map +1 -0
  204. package/dist/database/migrations/1767404043438-create_billings_related_tables.js +19 -0
  205. package/dist/database/migrations/1767617739297-update_tables.d.ts +7 -0
  206. package/dist/database/migrations/1767617739297-update_tables.d.ts.map +1 -0
  207. package/dist/database/migrations/1767617739297-update_tables.js +27 -0
  208. package/dist/database/migrations/1767717097064-create_event_attendance_table.d.ts +7 -0
  209. package/dist/database/migrations/1767717097064-create_event_attendance_table.d.ts.map +1 -0
  210. package/dist/database/migrations/1767717097064-create_event_attendance_table.js +40 -0
  211. package/dist/database/migrations/1767792070012-added_more_fields_to_users_table.d.ts +7 -0
  212. package/dist/database/migrations/1767792070012-added_more_fields_to_users_table.d.ts.map +1 -0
  213. package/dist/database/migrations/1767792070012-added_more_fields_to_users_table.js +17 -0
  214. package/dist/database/migrations/1767878654013-added_more_fields_to_users_table.d.ts +7 -0
  215. package/dist/database/migrations/1767878654013-added_more_fields_to_users_table.d.ts.map +1 -0
  216. package/dist/database/migrations/1767878654013-added_more_fields_to_users_table.js +15 -0
  217. package/dist/database/migrations/1767882191474-added_more_fields_to_events_table.d.ts +7 -0
  218. package/dist/database/migrations/1767882191474-added_more_fields_to_events_table.d.ts.map +1 -0
  219. package/dist/database/migrations/1767882191474-added_more_fields_to_events_table.js +17 -0
  220. package/dist/database/migrations/1767883990258-added_coordinates_field_to_events_table.d.ts +7 -0
  221. package/dist/database/migrations/1767883990258-added_coordinates_field_to_events_table.d.ts.map +1 -0
  222. package/dist/database/migrations/1767883990258-added_coordinates_field_to_events_table.js +19 -0
  223. package/dist/database/migrations/1767890415337-added_coordinates_field_to_user_profiles_table.d.ts +7 -0
  224. package/dist/database/migrations/1767890415337-added_coordinates_field_to_user_profiles_table.d.ts.map +1 -0
  225. package/dist/database/migrations/1767890415337-added_coordinates_field_to_user_profiles_table.js +15 -0
  226. package/dist/database/migrations/1767891781321-create_location_gist_index.d.ts +6 -0
  227. package/dist/database/migrations/1767891781321-create_location_gist_index.d.ts.map +1 -0
  228. package/dist/database/migrations/1767891781321-create_location_gist_index.js +26 -0
  229. package/dist/database/migrations/1768486598835-create_comunity_creation_tables.d.ts +7 -0
  230. package/dist/database/migrations/1768486598835-create_comunity_creation_tables.d.ts.map +1 -0
  231. package/dist/database/migrations/1768486598835-create_comunity_creation_tables.js +47 -0
  232. package/dist/database/migrations/1768489253067-create_comunity_creation_tables.d.ts +7 -0
  233. package/dist/database/migrations/1768489253067-create_comunity_creation_tables.d.ts.map +1 -0
  234. package/dist/database/migrations/1768489253067-create_comunity_creation_tables.js +19 -0
  235. package/dist/database/migrations/1768713527323-create_posts_table.d.ts +7 -0
  236. package/dist/database/migrations/1768713527323-create_posts_table.d.ts.map +1 -0
  237. package/dist/database/migrations/1768713527323-create_posts_table.js +29 -0
  238. package/dist/database/migrations/1768888281914-create_post_comments_table.d.ts +7 -0
  239. package/dist/database/migrations/1768888281914-create_post_comments_table.d.ts.map +1 -0
  240. package/dist/database/migrations/1768888281914-create_post_comments_table.js +45 -0
  241. package/dist/database/migrations/1768897962516-tightened_the_likable_type_field_in_likes_table.d.ts +7 -0
  242. package/dist/database/migrations/1768897962516-tightened_the_likable_type_field_in_likes_table.d.ts.map +1 -0
  243. package/dist/database/migrations/1768897962516-tightened_the_likable_type_field_in_likes_table.js +21 -0
  244. package/dist/database/migrations/1769721210774-create_products_table.d.ts +7 -0
  245. package/dist/database/migrations/1769721210774-create_products_table.d.ts.map +1 -0
  246. package/dist/database/migrations/1769721210774-create_products_table.js +97 -0
  247. package/dist/database/migrations/1769728749602-modified_products_table.d.ts +7 -0
  248. package/dist/database/migrations/1769728749602-modified_products_table.d.ts.map +1 -0
  249. package/dist/database/migrations/1769728749602-modified_products_table.js +13 -0
  250. package/dist/database/migrations/1769852101831-create_businesses_table.d.ts +7 -0
  251. package/dist/database/migrations/1769852101831-create_businesses_table.d.ts.map +1 -0
  252. package/dist/database/migrations/1769852101831-create_businesses_table.js +35 -0
  253. package/dist/database/migrations/1769854726115-modified_businesses_table.d.ts +7 -0
  254. package/dist/database/migrations/1769854726115-modified_businesses_table.d.ts.map +1 -0
  255. package/dist/database/migrations/1769854726115-modified_businesses_table.js +17 -0
  256. package/dist/database/migrations/1770059807138-nullified_title_posts_table.d.ts +7 -0
  257. package/dist/database/migrations/1770059807138-nullified_title_posts_table.d.ts.map +1 -0
  258. package/dist/database/migrations/1770059807138-nullified_title_posts_table.js +25 -0
  259. package/dist/database/migrations/1770108116282-added_business_id_products_table.d.ts +7 -0
  260. package/dist/database/migrations/1770108116282-added_business_id_products_table.d.ts.map +1 -0
  261. package/dist/database/migrations/1770108116282-added_business_id_products_table.js +15 -0
  262. package/dist/database/migrations/1770145991793-create_service_providers_table.d.ts +7 -0
  263. package/dist/database/migrations/1770145991793-create_service_providers_table.d.ts.map +1 -0
  264. package/dist/database/migrations/1770145991793-create_service_providers_table.js +39 -0
  265. package/dist/database/migrations/1770202856432-modified_service_providers_table.d.ts +7 -0
  266. package/dist/database/migrations/1770202856432-modified_service_providers_table.d.ts.map +1 -0
  267. package/dist/database/migrations/1770202856432-modified_service_providers_table.js +23 -0
  268. package/dist/database/migrations/1770203361907-modified_service_providers_table.d.ts +7 -0
  269. package/dist/database/migrations/1770203361907-modified_service_providers_table.d.ts.map +1 -0
  270. package/dist/database/migrations/1770203361907-modified_service_providers_table.js +15 -0
  271. package/dist/database/migrations/1770221489298-modified_service_providers_table.d.ts +7 -0
  272. package/dist/database/migrations/1770221489298-modified_service_providers_table.d.ts.map +1 -0
  273. package/dist/database/migrations/1770221489298-modified_service_providers_table.js +15 -0
  274. package/dist/database/migrations/1770234277025-added_category_id_to_service_providers_table.d.ts +7 -0
  275. package/dist/database/migrations/1770234277025-added_category_id_to_service_providers_table.d.ts.map +1 -0
  276. package/dist/database/migrations/1770234277025-added_category_id_to_service_providers_table.js +15 -0
  277. package/dist/database/migrations/1770235034364-added_category_id_to_service_providers_table.d.ts +7 -0
  278. package/dist/database/migrations/1770235034364-added_category_id_to_service_providers_table.d.ts.map +1 -0
  279. package/dist/database/migrations/1770235034364-added_category_id_to_service_providers_table.js +17 -0
  280. package/dist/database/migrations/1770459229926-create_articles_table.d.ts +7 -0
  281. package/dist/database/migrations/1770459229926-create_articles_table.d.ts.map +1 -0
  282. package/dist/database/migrations/1770459229926-create_articles_table.js +61 -0
  283. package/dist/database/migrations/1770544472943-modified_users_table.d.ts +7 -0
  284. package/dist/database/migrations/1770544472943-modified_users_table.d.ts.map +1 -0
  285. package/dist/database/migrations/1770544472943-modified_users_table.js +15 -0
  286. package/dist/database/migrations/1770556066865-create_chats_table.d.ts +7 -0
  287. package/dist/database/migrations/1770556066865-create_chats_table.d.ts.map +1 -0
  288. package/dist/database/migrations/1770556066865-create_chats_table.js +37 -0
  289. package/dist/database/migrations/1770557237871-modified_chats_table.d.ts +7 -0
  290. package/dist/database/migrations/1770557237871-modified_chats_table.d.ts.map +1 -0
  291. package/dist/database/migrations/1770557237871-modified_chats_table.js +21 -0
  292. package/dist/database/migrations/1770559802657-modified_chats_table.d.ts +7 -0
  293. package/dist/database/migrations/1770559802657-modified_chats_table.d.ts.map +1 -0
  294. package/dist/database/migrations/1770559802657-modified_chats_table.js +27 -0
  295. package/dist/database/migrations/1770570310226-modified_chats_table.d.ts +7 -0
  296. package/dist/database/migrations/1770570310226-modified_chats_table.d.ts.map +1 -0
  297. package/dist/database/migrations/1770570310226-modified_chats_table.js +29 -0
  298. package/dist/database/migrations/1770574652097-modified_chats_table.d.ts +7 -0
  299. package/dist/database/migrations/1770574652097-modified_chats_table.d.ts.map +1 -0
  300. package/dist/database/migrations/1770574652097-modified_chats_table.js +31 -0
  301. package/dist/database/migrations/1770728516930-modified_chats_table.d.ts +7 -0
  302. package/dist/database/migrations/1770728516930-modified_chats_table.d.ts.map +1 -0
  303. package/dist/database/migrations/1770728516930-modified_chats_table.js +23 -0
  304. package/dist/database/seeds/CommunityDataSeeder.js +48 -0
  305. package/dist/database/seeds/EventDataSeeder.js +54 -0
  306. package/dist/database/seeds/FeatureSeeder.js +131 -0
  307. package/dist/database/seeds/MarketplaceDataSeeder.js +95 -0
  308. package/dist/database/seeds/PlanSeeder.js +78 -0
  309. package/dist/database/seeds/UserProfileDataSeeder.js +215 -0
  310. package/dist/database/seeds/index.js +39 -0
  311. package/dist/index.d.ts +11 -0
  312. package/dist/index.d.ts.map +1 -0
  313. package/dist/index.js +26 -0
  314. package/dist/ioc.d.ts +6 -0
  315. package/dist/ioc.d.ts.map +1 -0
  316. package/dist/ioc.js +9 -0
  317. package/dist/models/AdminUserModel.d.ts +18 -0
  318. package/dist/models/AdminUserModel.d.ts.map +1 -0
  319. package/dist/models/AdminUserModel.js +92 -0
  320. package/dist/models/ArticleCommentModel.d.ts +14 -0
  321. package/dist/models/ArticleCommentModel.d.ts.map +1 -0
  322. package/dist/models/ArticleCommentModel.js +69 -0
  323. package/dist/models/ArticleImageModel.d.ts +10 -0
  324. package/dist/models/ArticleImageModel.d.ts.map +1 -0
  325. package/dist/models/ArticleImageModel.js +45 -0
  326. package/dist/models/ArticleModel.d.ts +16 -0
  327. package/dist/models/ArticleModel.d.ts.map +1 -0
  328. package/dist/models/ArticleModel.js +70 -0
  329. package/dist/models/BaseModel.d.ts +8 -0
  330. package/dist/models/BaseModel.d.ts.map +1 -0
  331. package/dist/models/BaseModel.js +43 -0
  332. package/dist/models/BookmarkModel.d.ts +8 -0
  333. package/dist/models/BookmarkModel.d.ts.map +1 -0
  334. package/dist/models/BookmarkModel.js +40 -0
  335. package/dist/models/BusinessCategoryModel.d.ts +5 -0
  336. package/dist/models/BusinessCategoryModel.d.ts.map +1 -0
  337. package/dist/models/BusinessCategoryModel.js +25 -0
  338. package/dist/models/BusinessIdCategoryModel.d.ts +5 -0
  339. package/dist/models/BusinessIdCategoryModel.d.ts.map +1 -0
  340. package/dist/models/BusinessIdCategoryModel.js +25 -0
  341. package/dist/models/BusinessModel.d.ts +22 -0
  342. package/dist/models/BusinessModel.d.ts.map +1 -0
  343. package/dist/models/BusinessModel.js +103 -0
  344. package/dist/models/BusinessServiceModel.d.ts +12 -0
  345. package/dist/models/BusinessServiceModel.d.ts.map +1 -0
  346. package/dist/models/BusinessServiceModel.js +54 -0
  347. package/dist/models/CardModel.d.ts +19 -0
  348. package/dist/models/CardModel.d.ts.map +1 -0
  349. package/dist/models/CardModel.js +91 -0
  350. package/dist/models/CategoryModel.d.ts +5 -0
  351. package/dist/models/CategoryModel.d.ts.map +1 -0
  352. package/dist/models/CategoryModel.js +25 -0
  353. package/dist/models/ChallengeModel.d.ts +6 -0
  354. package/dist/models/ChallengeModel.d.ts.map +1 -0
  355. package/dist/models/ChallengeModel.js +30 -0
  356. package/dist/models/ChatMessageModel.d.ts +16 -0
  357. package/dist/models/ChatMessageModel.d.ts.map +1 -0
  358. package/dist/models/ChatMessageModel.js +75 -0
  359. package/dist/models/CommentModel.d.ts +14 -0
  360. package/dist/models/CommentModel.d.ts.map +1 -0
  361. package/dist/models/CommentModel.js +69 -0
  362. package/dist/models/CommunityMemberModel.d.ts +12 -0
  363. package/dist/models/CommunityMemberModel.d.ts.map +1 -0
  364. package/dist/models/CommunityMemberModel.js +55 -0
  365. package/dist/models/CommunityModel.d.ts +22 -0
  366. package/dist/models/CommunityModel.d.ts.map +1 -0
  367. package/dist/models/CommunityModel.js +97 -0
  368. package/dist/models/CommunityTopicModel.d.ts +10 -0
  369. package/dist/models/CommunityTopicModel.d.ts.map +1 -0
  370. package/dist/models/CommunityTopicModel.js +45 -0
  371. package/dist/models/ConnectionModel.d.ts +11 -0
  372. package/dist/models/ConnectionModel.d.ts.map +1 -0
  373. package/dist/models/ConnectionModel.js +53 -0
  374. package/dist/models/ConversationModel.d.ts +8 -0
  375. package/dist/models/ConversationModel.d.ts.map +1 -0
  376. package/dist/models/ConversationModel.js +43 -0
  377. package/dist/models/DiagnosisLevelModel.d.ts +7 -0
  378. package/dist/models/DiagnosisLevelModel.d.ts.map +1 -0
  379. package/dist/models/DiagnosisLevelModel.js +32 -0
  380. package/dist/models/EducationModel.d.ts +5 -0
  381. package/dist/models/EducationModel.d.ts.map +1 -0
  382. package/dist/models/EducationModel.js +25 -0
  383. package/dist/models/EventAttendanceModel.d.ts +10 -0
  384. package/dist/models/EventAttendanceModel.d.ts.map +1 -0
  385. package/dist/models/EventAttendanceModel.js +45 -0
  386. package/dist/models/EventModel.d.ts +25 -0
  387. package/dist/models/EventModel.d.ts.map +1 -0
  388. package/dist/models/EventModel.js +119 -0
  389. package/dist/models/EventTypeModel.d.ts +7 -0
  390. package/dist/models/EventTypeModel.d.ts.map +1 -0
  391. package/dist/models/EventTypeModel.js +31 -0
  392. package/dist/models/FeatureModel.d.ts +9 -0
  393. package/dist/models/FeatureModel.d.ts.map +1 -0
  394. package/dist/models/FeatureModel.js +50 -0
  395. package/dist/models/GoalModel.d.ts +5 -0
  396. package/dist/models/GoalModel.d.ts.map +1 -0
  397. package/dist/models/GoalModel.js +25 -0
  398. package/dist/models/InterestModel.d.ts +7 -0
  399. package/dist/models/InterestModel.d.ts.map +1 -0
  400. package/dist/models/InterestModel.js +32 -0
  401. package/dist/models/LikeModel.d.ts +10 -0
  402. package/dist/models/LikeModel.d.ts.map +1 -0
  403. package/dist/models/LikeModel.js +48 -0
  404. package/dist/models/NotificationModel.d.ts +14 -0
  405. package/dist/models/NotificationModel.d.ts.map +1 -0
  406. package/dist/models/NotificationModel.js +66 -0
  407. package/dist/models/PaymentGatewayCustomerModel.d.ts +6 -0
  408. package/dist/models/PaymentGatewayCustomerModel.d.ts.map +1 -0
  409. package/dist/models/PaymentGatewayCustomerModel.js +31 -0
  410. package/dist/models/PlanFeatureModel.d.ts +11 -0
  411. package/dist/models/PlanFeatureModel.d.ts.map +1 -0
  412. package/dist/models/PlanFeatureModel.js +50 -0
  413. package/dist/models/PlanModel.d.ts +15 -0
  414. package/dist/models/PlanModel.d.ts.map +1 -0
  415. package/dist/models/PlanModel.js +68 -0
  416. package/dist/models/PostImageModel.d.ts +10 -0
  417. package/dist/models/PostImageModel.d.ts.map +1 -0
  418. package/dist/models/PostImageModel.js +45 -0
  419. package/dist/models/PostModel.d.ts +20 -0
  420. package/dist/models/PostModel.d.ts.map +1 -0
  421. package/dist/models/PostModel.js +87 -0
  422. package/dist/models/ProductImageModel.d.ts +10 -0
  423. package/dist/models/ProductImageModel.d.ts.map +1 -0
  424. package/dist/models/ProductImageModel.js +45 -0
  425. package/dist/models/ProductModel.d.ts +20 -0
  426. package/dist/models/ProductModel.d.ts.map +1 -0
  427. package/dist/models/ProductModel.js +96 -0
  428. package/dist/models/ReviewModel.d.ts +7 -0
  429. package/dist/models/ReviewModel.d.ts.map +1 -0
  430. package/dist/models/ReviewModel.js +36 -0
  431. package/dist/models/ServiceProviderModel.d.ts +23 -0
  432. package/dist/models/ServiceProviderModel.d.ts.map +1 -0
  433. package/dist/models/ServiceProviderModel.js +109 -0
  434. package/dist/models/SessionModel.d.ts +8 -0
  435. package/dist/models/SessionModel.d.ts.map +1 -0
  436. package/dist/models/SessionModel.js +40 -0
  437. package/dist/models/SpeechModel.d.ts +7 -0
  438. package/dist/models/SpeechModel.d.ts.map +1 -0
  439. package/dist/models/SpeechModel.js +32 -0
  440. package/dist/models/SubscriptionHistoryModel.d.ts +12 -0
  441. package/dist/models/SubscriptionHistoryModel.d.ts.map +1 -0
  442. package/dist/models/SubscriptionHistoryModel.js +60 -0
  443. package/dist/models/SubscriptionModel.d.ts +11 -0
  444. package/dist/models/SubscriptionModel.d.ts.map +1 -0
  445. package/dist/models/SubscriptionModel.js +53 -0
  446. package/dist/models/TopicModel.d.ts +7 -0
  447. package/dist/models/TopicModel.d.ts.map +1 -0
  448. package/dist/models/TopicModel.js +31 -0
  449. package/dist/models/TransactionModel.d.ts +15 -0
  450. package/dist/models/TransactionModel.d.ts.map +1 -0
  451. package/dist/models/TransactionModel.js +76 -0
  452. package/dist/models/UploadModel.d.ts +24 -0
  453. package/dist/models/UploadModel.d.ts.map +1 -0
  454. package/dist/models/UploadModel.js +119 -0
  455. package/dist/models/UserModel.d.ts +47 -0
  456. package/dist/models/UserModel.d.ts.map +1 -0
  457. package/dist/models/UserModel.js +237 -0
  458. package/dist/models/UserProfileModel.d.ts +28 -0
  459. package/dist/models/UserProfileModel.d.ts.map +1 -0
  460. package/dist/models/UserProfileModel.js +138 -0
  461. package/dist/models/index.d.ts +49 -0
  462. package/dist/models/index.d.ts.map +1 -0
  463. package/dist/models/index.js +64 -0
  464. package/dist/services/StripeService.js +288 -0
  465. package/dist/services/mobile/ArticleCommentService.js +479 -0
  466. package/dist/services/mobile/ArticleService.js +507 -0
  467. package/dist/services/mobile/AuthService.js +362 -0
  468. package/dist/services/mobile/BusinessService.js +267 -0
  469. package/dist/services/mobile/BusinessServiceService.js +383 -0
  470. package/dist/services/mobile/CardService.js +249 -0
  471. package/dist/services/mobile/ChatService.js +324 -0
  472. package/dist/services/mobile/CommunityMemberService.js +193 -0
  473. package/dist/services/mobile/CommunityService.js +561 -0
  474. package/dist/services/mobile/CompleteProfileService.js +308 -0
  475. package/dist/services/mobile/ConnectionService.js +338 -0
  476. package/dist/services/mobile/EventAttendanceService.js +343 -0
  477. package/dist/services/mobile/EventService.js +540 -0
  478. package/dist/services/mobile/NotificationService.js +89 -0
  479. package/dist/services/mobile/PasswordResetService.js +168 -0
  480. package/dist/services/mobile/PlanService.js +85 -0
  481. package/dist/services/mobile/PostCommentService.js +611 -0
  482. package/dist/services/mobile/PostService.js +640 -0
  483. package/dist/services/mobile/ProductService.js +360 -0
  484. package/dist/services/mobile/RedisService.js +16 -0
  485. package/dist/services/mobile/TransactionService.js +51 -0
  486. package/dist/services/mobile/UploadService.js +110 -0
  487. package/dist/services/mobile/UserService.js +128 -0
  488. package/package.json +73 -0
@@ -0,0 +1,611 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const typedi_1 = require("typedi");
16
+ const logger_1 = require("../../common/configs/logger");
17
+ const AppError_1 = require("../../common/errors/AppError");
18
+ const messages_1 = require("../../common/constants/messages");
19
+ const PostRepository_1 = require("@/repositories/PostRepository");
20
+ const Paginator_1 = require("@/transformers/Paginator");
21
+ const configs_1 = require("@/common/configs");
22
+ const CommunityMemberRepository_1 = require("@/repositories/CommunityMemberRepository");
23
+ const CommunityRepository_1 = require("@/repositories/CommunityRepository");
24
+ const PostCommentRepository_1 = require("@/repositories/PostCommentRepository");
25
+ const PostCommentResource_1 = require("@/transformers/resources/PostCommentResource");
26
+ const IndexEnum_1 = require("@/common/enums/IndexEnum");
27
+ const LikeRepository_1 = require("@/repositories/LikeRepository");
28
+ const CommentModel_1 = __importDefault(require("@/models/CommentModel"));
29
+ const LikeModel_1 = __importDefault(require("@/models/LikeModel"));
30
+ let PostCommentService = class PostCommentService {
31
+ postRepository;
32
+ postCommentRepository;
33
+ communityMemberRepository;
34
+ communityRepository;
35
+ likeRepository;
36
+ constructor() {
37
+ this.postRepository = new PostRepository_1.PostRepository();
38
+ this.likeRepository = new LikeRepository_1.LikeRepository();
39
+ this.communityRepository = new CommunityRepository_1.CommunityRepository();
40
+ this.communityMemberRepository = new CommunityMemberRepository_1.CommunityMemberRepository();
41
+ this.postCommentRepository = new PostCommentRepository_1.PostCommentRepository();
42
+ }
43
+ async createPostComment(postCommentData, user_id, post_id) {
44
+ let message;
45
+ const { content, } = postCommentData;
46
+ const post = await this.postRepository.basicFindOneByConditions({
47
+ uuid: post_id
48
+ });
49
+ if (!post) {
50
+ message = messages_1.dynamic_messages.NOT_FOUND("Post");
51
+ logger_1.logger.info(message);
52
+ throw new AppError_1.AppError(message, 404);
53
+ }
54
+ const community = await this.communityRepository.basicFindOneByConditions({
55
+ id: post.community_id
56
+ });
57
+ if (!community) {
58
+ message = messages_1.dynamic_messages.NOT_FOUND("Community");
59
+ logger_1.logger.info(message);
60
+ throw new AppError_1.AppError(message, 404);
61
+ }
62
+ const isCommunityMember = await this.communityMemberRepository.basicFindOneByConditions({
63
+ community_id: community.id,
64
+ member_id: user_id
65
+ });
66
+ if (!isCommunityMember) {
67
+ message = `You must be a member of ${community.name} to be able to make a comment on this post!`;
68
+ logger_1.logger.info(message);
69
+ throw new AppError_1.AppError(message, 403);
70
+ }
71
+ const createdPostComment = await this.postCommentRepository.create({
72
+ content,
73
+ post_id: post.id,
74
+ user_id
75
+ });
76
+ const comment = await this.postCommentRepository.findOneAndRelations({
77
+ where: { uuid: createdPostComment.uuid },
78
+ relations: ['user']
79
+ });
80
+ logger_1.logger.info("Post comment created successfully");
81
+ return {
82
+ successful: true,
83
+ data: comment ? PostCommentResource_1.PostCommentResource.toJSON(comment, user_id) : null,
84
+ message: "Post comment created successfully"
85
+ };
86
+ }
87
+ async createReplyComment(postCommentData, user_id, comment_id) {
88
+ let message;
89
+ const { content, } = postCommentData;
90
+ const parentComment = await this.postCommentRepository.basicFindOneByConditions({
91
+ uuid: comment_id
92
+ });
93
+ if (!parentComment) {
94
+ message = "We couldn't find the comment you want to reply";
95
+ logger_1.logger.info(message);
96
+ throw new AppError_1.AppError(message, 404);
97
+ }
98
+ const post = await this.postRepository.basicFindOneByConditions({
99
+ id: parentComment.post_id
100
+ });
101
+ if (!post) {
102
+ message = "We couldn't find the post that should have owned the comment you want to reply";
103
+ logger_1.logger.info(message);
104
+ throw new AppError_1.AppError(message, 404);
105
+ }
106
+ const community = await this.communityRepository.basicFindOneByConditions({
107
+ id: post.community_id
108
+ });
109
+ if (!community) {
110
+ message = messages_1.dynamic_messages.NOT_FOUND("Community");
111
+ logger_1.logger.info(message);
112
+ throw new AppError_1.AppError(message, 404);
113
+ }
114
+ const isCommunityMember = await this.communityMemberRepository.basicFindOneByConditions({
115
+ community_id: community.id,
116
+ member_id: user_id
117
+ });
118
+ if (!isCommunityMember) {
119
+ message = `You must be a member of ${community.name} to be able to reply a comment on this post!`;
120
+ logger_1.logger.info(message);
121
+ throw new AppError_1.AppError(message, 403);
122
+ }
123
+ const createdPostComment = await this.postCommentRepository.create({
124
+ content,
125
+ post_id: post.id,
126
+ parent_id: parentComment.id,
127
+ user_id
128
+ });
129
+ const comment = await this.postCommentRepository.findOneAndRelations({
130
+ where: { uuid: createdPostComment.uuid },
131
+ relations: ['user']
132
+ });
133
+ logger_1.logger.info("Post's comment's reply created successfully");
134
+ return {
135
+ successful: true,
136
+ data: comment ? PostCommentResource_1.PostCommentResource.toJSON(comment, user_id) : null,
137
+ message: "Post' comment's reply created successfully"
138
+ };
139
+ }
140
+ async getComment(comment_id, user_id) {
141
+ let message;
142
+ const comment = await this.postCommentRepository.findOneAndRelations({
143
+ where: {
144
+ uuid: comment_id
145
+ },
146
+ relations: ['user']
147
+ });
148
+ if (!comment) {
149
+ message = messages_1.dynamic_messages.NOT_FOUND("Comment");
150
+ logger_1.logger.info(message);
151
+ throw new AppError_1.AppError(message, 404);
152
+ }
153
+ const post = await this.postRepository.basicFindOneByConditions({
154
+ id: comment.post_id
155
+ });
156
+ if (!post) {
157
+ message = "We couldn't find the post that should have owned this comment";
158
+ logger_1.logger.info(message);
159
+ throw new AppError_1.AppError(message, 404);
160
+ }
161
+ const community = await this.communityRepository.basicFindOneByConditions({
162
+ id: post.community_id
163
+ });
164
+ if (!community) {
165
+ message = "We couldn't find the community that owns the post on which this comment was made";
166
+ logger_1.logger.info(message);
167
+ throw new AppError_1.AppError(message, 404);
168
+ }
169
+ const qb = this.postCommentRepository
170
+ .getRepo()
171
+ .createQueryBuilder("comment")
172
+ .leftJoin("comment.user", "user")
173
+ .leftJoin("user.user_profile", "profile")
174
+ .leftJoin("profile.avatar", "avatar")
175
+ .where("comment.deleted_at IS NULL")
176
+ .andWhere("comment.post_id = :postId", { postId: post.id })
177
+ .andWhere("comment.uuid = :commentId", {
178
+ commentId: comment_id,
179
+ })
180
+ .take(1)
181
+ .orderBy("comment.created_at", "DESC");
182
+ /* ======================
183
+ SELECT FIELDS
184
+ ====================== */
185
+ qb.select([
186
+ "comment.id",
187
+ "comment.uuid",
188
+ "comment.content",
189
+ "comment.created_at",
190
+ "comment.updated_at",
191
+ "user.id",
192
+ "user.uuid",
193
+ "user.full_name",
194
+ "avatar.url AS profile_image_url",
195
+ ]);
196
+ /* ======================
197
+ REPLIES COUNT
198
+ ====================== */
199
+ qb.addSelect(subQuery => {
200
+ return subQuery
201
+ .select("COUNT(r.id)")
202
+ .from(CommentModel_1.default, "r")
203
+ .where("r.parent_id = comment.id")
204
+ .andWhere("r.deleted_at IS NULL");
205
+ }, "replies_count");
206
+ // Check if user has liked the comment
207
+ qb.addSelect(`
208
+ EXISTS (
209
+ SELECT 1
210
+ FROM likes l
211
+ WHERE l.likeable_id = comment.id
212
+ AND l.likeable_type = :likeType
213
+ AND l.user_id = :user_id
214
+ AND l.deleted_at IS NULL
215
+ )
216
+ `, "has_liked")
217
+ .setParameter("likeType", IndexEnum_1.SYS_MODELS.POST_COMMENT_MODEL)
218
+ .setParameter("user_id", user_id);
219
+ /* ======================
220
+ LIKES COUNT (COMMENT)
221
+ ====================== */
222
+ qb.addSelect(subQuery => {
223
+ return subQuery
224
+ .select("COUNT(l.id)")
225
+ .from(LikeModel_1.default, "l")
226
+ .where("l.likeable_id = comment.id")
227
+ .andWhere("l.likeable_type = :commentType")
228
+ .andWhere("l.deleted_at IS NULL");
229
+ }, "likes_count")
230
+ .setParameter("commentType", IndexEnum_1.SYS_MODELS.POST_COMMENT_MODEL);
231
+ const { entities, raw } = await qb.getRawAndEntities();
232
+ const foundComment = entities[0];
233
+ const { uuid, content, created_at, updated_at, user } = foundComment;
234
+ const data = {
235
+ uuid,
236
+ content,
237
+ created_at,
238
+ updated_at,
239
+ creator: {
240
+ uuid: user?.uuid,
241
+ full_name: user?.full_name,
242
+ profile_image_url: raw[0]?.profile_image_url,
243
+ },
244
+ replies_count: raw[0]?.replies_count,
245
+ likes_count: raw[0]?.likes_count,
246
+ has_liked: raw[0]?.has_liked,
247
+ };
248
+ return {
249
+ successful: true,
250
+ data,
251
+ message: "Comment fetched successfully!"
252
+ };
253
+ }
254
+ async likeOrUnlikeComment(comment_id, user_id) {
255
+ let message;
256
+ const comment = await this.postCommentRepository.basicFindOneByConditions({
257
+ uuid: comment_id
258
+ });
259
+ if (!comment) {
260
+ message = "We couldn't find the comment you want to like/unlike";
261
+ logger_1.logger.info(message);
262
+ throw new AppError_1.AppError(message, 404);
263
+ }
264
+ const post = await this.postRepository.basicFindOneByConditions({
265
+ id: comment.post_id
266
+ });
267
+ if (!post) {
268
+ message = "We couldn't find the post that should have owned the comment you want to like/unlike";
269
+ logger_1.logger.info(message);
270
+ throw new AppError_1.AppError(message, 404);
271
+ }
272
+ const community = await this.communityRepository.basicFindOneByConditions({
273
+ id: post.community_id
274
+ });
275
+ if (!community) {
276
+ message = "We couldn't find the community that owns the post that has the comment you want to like or unlike";
277
+ logger_1.logger.info(message);
278
+ throw new AppError_1.AppError(message, 404);
279
+ }
280
+ const isCommunityMember = await this.communityMemberRepository.basicFindOneByConditions({
281
+ community_id: community.id,
282
+ member_id: user_id
283
+ });
284
+ if (!isCommunityMember) {
285
+ message = `You must be a member of ${community.name} to be to like or unlike a post's comment in it!`;
286
+ logger_1.logger.info(message);
287
+ throw new AppError_1.AppError(message, 403);
288
+ }
289
+ const alreadyLikedComment = await this.likeRepository.basicFindOneByConditions({
290
+ likeable_id: comment.id,
291
+ likeable_type: IndexEnum_1.SYS_MODELS.POST_COMMENT_MODEL,
292
+ user_id
293
+ });
294
+ if (alreadyLikedComment) {
295
+ // Unlike the comment
296
+ await this.likeRepository.deleteByCondition({
297
+ user_id,
298
+ likeable_id: comment.id,
299
+ likeable_type: IndexEnum_1.SYS_MODELS.POST_COMMENT_MODEL
300
+ });
301
+ message = "Comment unliked successfully";
302
+ }
303
+ else {
304
+ // Like the comment
305
+ await this.likeRepository.create({
306
+ user_id,
307
+ likeable_id: comment.id,
308
+ likeable_type: IndexEnum_1.SYS_MODELS.POST_COMMENT_MODEL
309
+ });
310
+ message = "Comment liked successfully";
311
+ }
312
+ return {
313
+ successful: true,
314
+ data: null,
315
+ message
316
+ };
317
+ }
318
+ async getPostComments(user_id, post_id, pageNumber) {
319
+ let message;
320
+ const page_number = pageNumber || 1;
321
+ const limit = configs_1.CONFIGS.DATA_FETCH_LIMIT || 10;
322
+ const post = await this.postRepository.basicFindOneByConditions({
323
+ uuid: post_id
324
+ });
325
+ if (!post) {
326
+ message = messages_1.dynamic_messages.NOT_FOUND("Post");
327
+ logger_1.logger.info(message);
328
+ throw new AppError_1.AppError(message, 404);
329
+ }
330
+ const community = await this.communityRepository.basicFindOneByConditions({
331
+ id: post.community_id
332
+ });
333
+ if (!community) {
334
+ message = "We couldn't find the community that owns the post on which the comments were made";
335
+ logger_1.logger.info(message);
336
+ throw new AppError_1.AppError(message, 404);
337
+ }
338
+ const paginationDto = {
339
+ page_number, limit
340
+ };
341
+ const { data, total, perPage, page } = await this.postCommentRepository.getPagedPostComments(paginationDto, post.id, user_id);
342
+ const { entities, raw } = data;
343
+ const postCommentEntities = entities;
344
+ const rawPostComments = raw;
345
+ const postComments = postCommentEntities.map((entity, index) => {
346
+ const { uuid, content, created_at, updated_at, user } = entity;
347
+ return {
348
+ uuid,
349
+ content,
350
+ created_at,
351
+ updated_at,
352
+ creator: {
353
+ uuid: user?.uuid,
354
+ full_name: user?.full_name,
355
+ profile_image_url: rawPostComments[index]?.profile_image_url,
356
+ },
357
+ replies_count: rawPostComments[index]?.replies_count,
358
+ likes_count: rawPostComments[index]?.likes_count,
359
+ has_liked: rawPostComments[index]?.has_liked,
360
+ };
361
+ });
362
+ const pagedPostComments = (0, Paginator_1.paginator)({
363
+ total,
364
+ perPage,
365
+ currentPage: page_number,
366
+ data: postComments,
367
+ });
368
+ return {
369
+ successful: true,
370
+ data: pagedPostComments,
371
+ message: "Comments fetched successfully!"
372
+ };
373
+ }
374
+ async getCommentReplies(user_id, comment_id, pageNumber) {
375
+ let message;
376
+ const page_number = pageNumber || 1;
377
+ const limit = configs_1.CONFIGS.DATA_FETCH_LIMIT || 10;
378
+ const parentComment = await this.postCommentRepository.basicFindOneByConditions({
379
+ uuid: comment_id
380
+ });
381
+ if (!parentComment) {
382
+ message = messages_1.dynamic_messages.NOT_FOUND("Comment");
383
+ logger_1.logger.info(message);
384
+ throw new AppError_1.AppError(message, 404);
385
+ }
386
+ const post = await this.postRepository.basicFindOneByConditions({
387
+ id: parentComment.post_id
388
+ });
389
+ if (!post) {
390
+ message = messages_1.dynamic_messages.NOT_FOUND("Post");
391
+ logger_1.logger.info(message);
392
+ throw new AppError_1.AppError(message, 404);
393
+ }
394
+ const community = await this.communityRepository.basicFindOneByConditions({
395
+ id: post.community_id
396
+ });
397
+ if (!community) {
398
+ message = "We couldn't find the community that owns the post on which the comments were made";
399
+ logger_1.logger.info(message);
400
+ throw new AppError_1.AppError(message, 404);
401
+ }
402
+ const paginationDto = {
403
+ page_number,
404
+ limit
405
+ };
406
+ const { data, total, perPage, page } = await this.postCommentRepository.getPagedCommentReplies(paginationDto, parentComment.id, user_id);
407
+ const { entities, raw } = data;
408
+ const postCommentEntities = entities;
409
+ const rawPostComments = raw;
410
+ const postComments = postCommentEntities.map((entity, index) => {
411
+ const { uuid, content, created_at, updated_at, user } = entity;
412
+ return {
413
+ uuid,
414
+ content,
415
+ created_at,
416
+ updated_at,
417
+ creator: {
418
+ uuid: user?.uuid,
419
+ full_name: user?.full_name,
420
+ profile_image_url: rawPostComments[index]?.profile_image_url,
421
+ },
422
+ replies_count: rawPostComments[index]?.replies_count,
423
+ likes_count: rawPostComments[index]?.likes_count,
424
+ has_liked: rawPostComments[index]?.has_liked,
425
+ };
426
+ });
427
+ const pagedPostComments = (0, Paginator_1.paginator)({
428
+ total,
429
+ perPage,
430
+ currentPage: page_number,
431
+ data: postComments,
432
+ });
433
+ return {
434
+ successful: true,
435
+ data: pagedPostComments,
436
+ message: "Comments fetched successfully!"
437
+ };
438
+ }
439
+ async getCommentLikes(user_id, comment_id, pageNumber) {
440
+ let message;
441
+ const page_number = pageNumber || 1;
442
+ const limit = configs_1.CONFIGS.DATA_FETCH_LIMIT || 10;
443
+ const comment = await this.postCommentRepository.basicFindOneByConditions({
444
+ uuid: comment_id
445
+ });
446
+ if (!comment) {
447
+ message = messages_1.dynamic_messages.NOT_FOUND("Comment");
448
+ logger_1.logger.info(message);
449
+ throw new AppError_1.AppError(message, 404);
450
+ }
451
+ const post = await this.postRepository.basicFindOneByConditions({
452
+ id: comment.post_id
453
+ });
454
+ if (!post) {
455
+ message = messages_1.dynamic_messages.NOT_FOUND("Post");
456
+ logger_1.logger.info(message);
457
+ throw new AppError_1.AppError(message, 404);
458
+ }
459
+ const community = await this.communityRepository.basicFindOneByConditions({
460
+ id: post.community_id
461
+ });
462
+ if (!community) {
463
+ message = "We couldn't find the community that owns the post on which the comments were made";
464
+ logger_1.logger.info(message);
465
+ throw new AppError_1.AppError(message, 404);
466
+ }
467
+ const isCommunityMember = await this.communityMemberRepository.basicFindOneByConditions({
468
+ community_id: community.id,
469
+ member_id: user_id
470
+ });
471
+ if (!isCommunityMember) {
472
+ message = `You must be a member of ${community.name} to be able to read a comments in it!`;
473
+ logger_1.logger.info(message);
474
+ throw new AppError_1.AppError(message, 403);
475
+ }
476
+ const paginationDto = {
477
+ page_number,
478
+ metadata: {
479
+ comment_id: comment.id
480
+ },
481
+ limit
482
+ };
483
+ const { data, total, perPage, page } = await this.likeRepository.getPagedCommentUserLikes(paginationDto, user_id);
484
+ const { entities, raw } = data;
485
+ const commentUserLikes = raw.map((like) => {
486
+ return {
487
+ user: {
488
+ name: like?.user_full_name,
489
+ uuid: like?.user_uuid,
490
+ avatar_url: like?.avatar_url,
491
+ },
492
+ liked_at: like?.like_created_at
493
+ };
494
+ });
495
+ const pagedCommentLikes = (0, Paginator_1.paginator)({
496
+ total,
497
+ perPage,
498
+ currentPage: page_number,
499
+ data: commentUserLikes,
500
+ });
501
+ return {
502
+ successful: true,
503
+ data: pagedCommentLikes,
504
+ message: "Comment likes fetched successfully!"
505
+ };
506
+ }
507
+ async updateOneComment(postCommentData, comment_id, user_id) {
508
+ let message;
509
+ const { content } = postCommentData;
510
+ const comment = await this.postCommentRepository.findOneAndRelations({
511
+ where: {
512
+ uuid: comment_id,
513
+ user_id
514
+ }
515
+ });
516
+ if (!comment) {
517
+ message = "We couldn't find the comment you want to update";
518
+ logger_1.logger.info(message);
519
+ throw new AppError_1.AppError(message, 404);
520
+ }
521
+ const post = await this.postRepository.basicFindOneByConditions({
522
+ id: comment.post_id
523
+ });
524
+ if (!post) {
525
+ message = "We couldn't find the post that should have owned the comment you want to update";
526
+ logger_1.logger.info(message);
527
+ throw new AppError_1.AppError(message, 404);
528
+ }
529
+ const community = await this.communityRepository.basicFindOneByConditions({
530
+ id: post.community_id
531
+ });
532
+ if (!community) {
533
+ message = "We couldn't find the community that owns the post on which this comment was made";
534
+ logger_1.logger.info(message);
535
+ throw new AppError_1.AppError(message, 404);
536
+ }
537
+ const isCommunityMember = await this.communityMemberRepository.basicFindOneByConditions({
538
+ community_id: community.id,
539
+ member_id: user_id
540
+ });
541
+ if (!isCommunityMember) {
542
+ message = `You must be a member of ${community.name} to be able to update a comment on this post!`;
543
+ logger_1.logger.info(message);
544
+ throw new AppError_1.AppError(message, 403);
545
+ }
546
+ const updatedComment = await this.postCommentRepository.updateOne({
547
+ uuid: comment.uuid,
548
+ user_id,
549
+ }, {
550
+ content
551
+ });
552
+ return {
553
+ successful: true,
554
+ data: updatedComment,
555
+ message: "Comment updated successfully!"
556
+ };
557
+ }
558
+ async deleteOneComment(comment_id, user_id) {
559
+ let message;
560
+ const comment = await this.postCommentRepository.findOneAndRelations({
561
+ where: {
562
+ uuid: comment_id,
563
+ user_id
564
+ }
565
+ });
566
+ if (!comment) {
567
+ message = "We couldn't find the comment you want to delete";
568
+ logger_1.logger.info(message);
569
+ throw new AppError_1.AppError(message, 404);
570
+ }
571
+ const post = await this.postRepository.basicFindOneByConditions({
572
+ id: comment.post_id
573
+ });
574
+ if (!post) {
575
+ message = "We couldn't find the post that should have owned the comment you want to delete";
576
+ logger_1.logger.info(message);
577
+ throw new AppError_1.AppError(message, 404);
578
+ }
579
+ const community = await this.communityRepository.basicFindOneByConditions({
580
+ id: post.community_id
581
+ });
582
+ if (!community) {
583
+ message = "We couldn't find the community that owns the post on which this comment was made";
584
+ logger_1.logger.info(message);
585
+ throw new AppError_1.AppError(message, 404);
586
+ }
587
+ const isCommunityMember = await this.communityMemberRepository.basicFindOneByConditions({
588
+ community_id: community.id,
589
+ member_id: user_id
590
+ });
591
+ if (!isCommunityMember) {
592
+ message = `You must be a member of ${community.name} to be able to delete a comment on this post!`;
593
+ logger_1.logger.info(message);
594
+ throw new AppError_1.AppError(message, 403);
595
+ }
596
+ await this.postCommentRepository.deleteByCondition({
597
+ uuid: comment.uuid,
598
+ user_id,
599
+ });
600
+ return {
601
+ successful: true,
602
+ data: null,
603
+ message: "Comment deleted successfully!"
604
+ };
605
+ }
606
+ };
607
+ PostCommentService = __decorate([
608
+ (0, typedi_1.Service)(),
609
+ __metadata("design:paramtypes", [])
610
+ ], PostCommentService);
611
+ exports.default = PostCommentService;