@churchsoln/dbms 1.0.47 → 1.0.48

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 (145) hide show
  1. package/Dockerfile +21 -21
  2. package/Makefile +132 -132
  3. package/app.js +37 -37
  4. package/config/config.js +33 -33
  5. package/config/errorCodes.js +65 -65
  6. package/config/errorMsgs.js +82 -82
  7. package/constants/index.js +94 -94
  8. package/controllers/church.js +100 -100
  9. package/controllers/index.js +6 -6
  10. package/controllers/master.js +138 -138
  11. package/controllers/migration.js +24 -24
  12. package/controllers/seed.js +33 -33
  13. package/db-setup.js +87 -87
  14. package/deployment/docker-compose.local.yml +64 -64
  15. package/deployment/docker-compose.yml +62 -62
  16. package/deployment/nginx/nginx-certs/localhost.crt +22 -22
  17. package/deployment/nginx/nginx-certs/localhost.key +28 -28
  18. package/deployment/nginx/nginx.local.conf +72 -72
  19. package/middlewares/church-filter.js +16 -16
  20. package/migrations/church/20221226151615-create-province.js +27 -27
  21. package/migrations/church/20221226151616-create-city.js +41 -41
  22. package/migrations/church/20221226151617-create-subRole.js +25 -25
  23. package/migrations/church/20221226151618-create-membership.js +68 -68
  24. package/migrations/church/20221226151619-create-member.js +140 -140
  25. package/migrations/church/20221227151615-create-user.js +60 -60
  26. package/migrations/church/20230826140644-create-eventsUpdates.js +29 -29
  27. package/migrations/church/20230904143429-create-ministries.js +26 -26
  28. package/migrations/church/20231021160018-create-gallery.js +28 -28
  29. package/migrations/church/20231105074019-create-feedback.js +28 -28
  30. package/migrations/church/20231111113342-create-banner.js +29 -29
  31. package/migrations/church/20231216105640-create-directoryBoard.js +31 -31
  32. package/migrations/church/20240214160101-create-volunteer.js +31 -31
  33. package/migrations/church/20240330111437-create-download.js +29 -29
  34. package/migrations/church/20240427170617-create-links.js +26 -26
  35. package/migrations/church/20240815170617-create-userTransfer.js +63 -63
  36. package/migrations/church/20240815170620-create-subRolePermission.js +40 -40
  37. package/migrations/church/20240915170620-create-transferType.js +25 -25
  38. package/migrations/church/20240917170620-create-accounts.js +27 -27
  39. package/migrations/church/20240918170621-create-church.js +54 -54
  40. package/migrations/church/20240918170622-create-group.js +61 -61
  41. package/migrations/church/20240918170623-create-groupMembers.js +74 -74
  42. package/migrations/church/20240918170627-create-pledge.js +96 -96
  43. package/migrations/church/20240919170627-create-contributionBatch.js +42 -42
  44. package/migrations/church/20240919170628-create-contributionTransaction.js +82 -82
  45. package/migrations/church/20240919170629-create-contributionTransactionLine.js +74 -74
  46. package/migrations/church/20240919170630-update-groupMembers.js +77 -77
  47. package/migrations/church/20241204170631-create-pledgeAccount.js +55 -55
  48. package/migrations/church/20241204170632-create-memberStatus.js +26 -0
  49. package/migrations/church/20241204170633-update-member.js +33 -0
  50. package/migrations/church/20241204170634-update-membership.js +33 -0
  51. package/migrations/church/20241204170635-update-pledge.js +33 -0
  52. package/migrations/church/20241204170636-update-contributionTransactionLine.js +33 -0
  53. package/migrations/common/20221226140655-create-subscriptionPlan.js +31 -31
  54. package/migrations/common/20221226143006-create-role.js +25 -25
  55. package/migrations/common/20240815170619-create-permission.js +27 -27
  56. package/migrations/common/20240815170620-create-church.js +56 -56
  57. package/migrations/common/20240815170621-create-churchDomain.js +40 -40
  58. package/migrations/common/20240918170621-create-churchPermission.js +53 -53
  59. package/migrations/common/20240918170622-create-user.js +35 -35
  60. package/migrations/common/20240918170627-create-subscriptionPlanPermission.js +53 -53
  61. package/models/church/accounts.js +23 -27
  62. package/models/church/banner.js +29 -29
  63. package/models/church/church.js +62 -62
  64. package/models/church/city.js +23 -23
  65. package/models/church/contributionBatch.js +45 -45
  66. package/models/church/contributionTransaction.js +90 -90
  67. package/models/church/contributionTransactionLine.js +81 -80
  68. package/models/church/directoryBoard.js +33 -33
  69. package/models/church/download.js +35 -35
  70. package/models/church/eventsUpdates.js +29 -29
  71. package/models/church/feedback.js +27 -27
  72. package/models/church/gallery.js +33 -33
  73. package/models/church/group.js +78 -78
  74. package/models/church/groupMembers.js +73 -73
  75. package/models/church/index.js +30 -30
  76. package/models/church/links.js +22 -22
  77. package/models/church/member.js +156 -171
  78. package/models/church/memberStatus.js +22 -0
  79. package/models/church/membership.js +75 -81
  80. package/models/church/ministries.js +16 -16
  81. package/models/church/pledge.js +65 -65
  82. package/models/church/pledgeAccount.js +45 -37
  83. package/models/church/province.js +23 -23
  84. package/models/church/subRole.js +21 -21
  85. package/models/church/subRolePermission.js +22 -22
  86. package/models/church/transferType.js +15 -15
  87. package/models/church/user.js +78 -78
  88. package/models/church/userTransfer.js +45 -45
  89. package/models/church/volunteer.js +33 -33
  90. package/models/common/church.js +58 -58
  91. package/models/common/churchDomain.js +21 -21
  92. package/models/common/churchPermission.js +26 -26
  93. package/models/common/index.js +40 -40
  94. package/models/common/permission.js +17 -17
  95. package/models/common/role.js +15 -15
  96. package/models/common/subscriptionPlan.js +34 -34
  97. package/models/common/subscriptionPlanPermission.js +33 -33
  98. package/models/common/user.js +39 -39
  99. package/package.json +41 -41
  100. package/public/swagger/church.json +521 -521
  101. package/public/swagger/master.json +537 -537
  102. package/public/swagger/migration.json +83 -83
  103. package/public/swagger/seed.json +98 -98
  104. package/queues/db-create.js +9 -9
  105. package/queues/index.js +5 -5
  106. package/queues/master.js +9 -9
  107. package/queues/migration.js +9 -9
  108. package/queues/seed.js +9 -9
  109. package/redis/config.js +5 -5
  110. package/routes/index.js +30 -30
  111. package/routes/v1/church.js +45 -45
  112. package/routes/v1/index.js +7 -7
  113. package/routes/v1/master.js +68 -68
  114. package/routes/v1/migration.js +10 -10
  115. package/routes/v1/seed.js +12 -12
  116. package/seeders/church/20241005124245-province.js +101 -101
  117. package/seeders/church/20241005124547-city.js +87 -87
  118. package/seeders/church/20241005131418-transferType.js +40 -40
  119. package/seeders/church/20241005131419-memberStatus.js +34 -0
  120. package/seeders/common/20241005123516-subscriptionPlan.js +43 -43
  121. package/seeders/common/20241005124105-role.js +38 -38
  122. package/seeders/common/20241005153047-permission.js +252 -242
  123. package/seeders/common/20241005153048-user.js +48 -48
  124. package/services/church.js +312 -312
  125. package/services/index.js +6 -6
  126. package/services/master.js +344 -344
  127. package/services/migration.js +30 -30
  128. package/services/seed.js +39 -39
  129. package/utils/churchManager.js +98 -98
  130. package/utils/crypto.js +40 -40
  131. package/utils/docUpload.js +51 -51
  132. package/utils/encryptDecrypt.js +26 -26
  133. package/utils/index.js +33 -33
  134. package/utils/logger.js +104 -104
  135. package/utils/response.js +108 -108
  136. package/utils/swagger.js +25 -25
  137. package/utils/verifyToken.js +58 -58
  138. package/validators/church.js +154 -154
  139. package/validators/index.js +3 -3
  140. package/validators/master.js +152 -152
  141. package/workers/db-create.js +37 -37
  142. package/workers/index.js +4 -4
  143. package/workers/master.js +50 -50
  144. package/workers/migrations.js +63 -63
  145. package/workers/seed.js +85 -85
@@ -1,139 +1,139 @@
1
- const { masterService } = require("../services");
2
- const errorCodes = require("../config/errorCodes.js");
3
- const response = require("../utils/response");
4
-
5
- class MasterController {
6
- async addSubscriptionPlan(req, res) {
7
- try {
8
- const result = await masterService.addSubscriptionPlanService(req.body);
9
- response.success(req, res, result.code, result.data, result.message);
10
- } catch (err) {
11
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
12
- }
13
- }
14
- async allSubscriptionPlan(req, res) {
15
- try {
16
- const result = await masterService.allSubscriptionPlanService(req.query);
17
- response.success(req, res, result.code, result.data, result.message);
18
- } catch (err) {
19
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
20
- }
21
- }
22
- async subscriptionPlanById(req, res) {
23
- try {
24
- const result = await masterService.subscriptionPlanByIdService(req.params);
25
- response.success(req, res, result.code, result.data, result.message);
26
- } catch (err) {
27
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
28
- }
29
- }
30
- async updateSubscriptionPlanById(req, res) {
31
- try {
32
- const result = await masterService.updateSubscriptionPlanByIdService({
33
- ...req.params,
34
- ...req.body,
35
- });
36
- response.success(req, res, result.code, result.data, result.message);
37
- } catch (err) {
38
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
39
- }
40
- }
41
- async deleteSubscriptionPlanById(req, res) {
42
- try {
43
- const result = await masterService.deleteSubscriptionPlanByIdService(req.params);
44
- response.success(req, res, result.code, result.data, result.message);
45
- } catch (err) {
46
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
47
- }
48
- }
49
-
50
- async addRole(req, res) {
51
- try {
52
- const result = await masterService.addRoleService(req.body);
53
- response.success(req, res, result.code, result.data, result.message);
54
- } catch (err) {
55
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
56
- }
57
- }
58
- async allRole(req, res) {
59
- try {
60
- const result = await masterService.allRoleService(req.query);
61
- response.success(req, res, result.code, result.data, result.message);
62
- } catch (err) {
63
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
64
- }
65
- }
66
- async roleById(req, res) {
67
- try {
68
- const result = await masterService.roleByIdService(req.params);
69
- response.success(req, res, result.code, result.data, result.message);
70
- } catch (err) {
71
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
72
- }
73
- }
74
- async updateRoleById(req, res) {
75
- try {
76
- const result = await masterService.updateRoleByIdService({
77
- ...req.params,
78
- ...req.body,
79
- });
80
- response.success(req, res, result.code, result.data, result.message);
81
- } catch (err) {
82
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
83
- }
84
- }
85
- async deleteRoleById(req, res) {
86
- try {
87
- const result = await masterService.deleteRoleByIdService(req.params);
88
- response.success(req, res, result.code, result.data, result.message);
89
- } catch (err) {
90
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
91
- }
92
- }
93
- async addPermission(req, res) {
94
- try {
95
- const result = await masterService.addPermission({ ...req.user, ...req.body });
96
- response.success(req, res, result.code, result.data, result.message);
97
- } catch (err) {
98
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
99
- }
100
- }
101
- async getPermission(req, res) {
102
- try {
103
- const result = await masterService.getPermissionService();
104
- response.success(req, res, result.code, result.data, result.message);
105
- } catch (err) {
106
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
107
- }
108
- }
109
- async getPermissionById(req, res) {
110
- try {
111
- const result = await masterService.getPermissionByIdService({ ...req.params });
112
- response.success(req, res, result.code, result.data, result.message);
113
- } catch (err) {
114
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
115
- }
116
- }
117
- async updatePermissionById(req, res) {
118
- try {
119
- const result = await masterService.updatePermissionByIdService({
120
- ...req.params,
121
- ...req.body,
122
- });
123
- response.success(req, res, result.code, result.data, result.message);
124
- } catch (err) {
125
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
126
- }
127
- }
128
- async deletePermissionById(req, res) {
129
- try {
130
- const result = await masterService.deletePermissionByIdService({
131
- ...req.params,
132
- });
133
- response.success(req, res, result.code, result.data, result.message);
134
- } catch (err) {
135
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
136
- }
137
- }
138
- }
1
+ const { masterService } = require("../services");
2
+ const errorCodes = require("../config/errorCodes.js");
3
+ const response = require("../utils/response");
4
+
5
+ class MasterController {
6
+ async addSubscriptionPlan(req, res) {
7
+ try {
8
+ const result = await masterService.addSubscriptionPlanService(req.body);
9
+ response.success(req, res, result.code, result.data, result.message);
10
+ } catch (err) {
11
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
12
+ }
13
+ }
14
+ async allSubscriptionPlan(req, res) {
15
+ try {
16
+ const result = await masterService.allSubscriptionPlanService(req.query);
17
+ response.success(req, res, result.code, result.data, result.message);
18
+ } catch (err) {
19
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
20
+ }
21
+ }
22
+ async subscriptionPlanById(req, res) {
23
+ try {
24
+ const result = await masterService.subscriptionPlanByIdService(req.params);
25
+ response.success(req, res, result.code, result.data, result.message);
26
+ } catch (err) {
27
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
28
+ }
29
+ }
30
+ async updateSubscriptionPlanById(req, res) {
31
+ try {
32
+ const result = await masterService.updateSubscriptionPlanByIdService({
33
+ ...req.params,
34
+ ...req.body,
35
+ });
36
+ response.success(req, res, result.code, result.data, result.message);
37
+ } catch (err) {
38
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
39
+ }
40
+ }
41
+ async deleteSubscriptionPlanById(req, res) {
42
+ try {
43
+ const result = await masterService.deleteSubscriptionPlanByIdService(req.params);
44
+ response.success(req, res, result.code, result.data, result.message);
45
+ } catch (err) {
46
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
47
+ }
48
+ }
49
+
50
+ async addRole(req, res) {
51
+ try {
52
+ const result = await masterService.addRoleService(req.body);
53
+ response.success(req, res, result.code, result.data, result.message);
54
+ } catch (err) {
55
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
56
+ }
57
+ }
58
+ async allRole(req, res) {
59
+ try {
60
+ const result = await masterService.allRoleService(req.query);
61
+ response.success(req, res, result.code, result.data, result.message);
62
+ } catch (err) {
63
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
64
+ }
65
+ }
66
+ async roleById(req, res) {
67
+ try {
68
+ const result = await masterService.roleByIdService(req.params);
69
+ response.success(req, res, result.code, result.data, result.message);
70
+ } catch (err) {
71
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
72
+ }
73
+ }
74
+ async updateRoleById(req, res) {
75
+ try {
76
+ const result = await masterService.updateRoleByIdService({
77
+ ...req.params,
78
+ ...req.body,
79
+ });
80
+ response.success(req, res, result.code, result.data, result.message);
81
+ } catch (err) {
82
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
83
+ }
84
+ }
85
+ async deleteRoleById(req, res) {
86
+ try {
87
+ const result = await masterService.deleteRoleByIdService(req.params);
88
+ response.success(req, res, result.code, result.data, result.message);
89
+ } catch (err) {
90
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
91
+ }
92
+ }
93
+ async addPermission(req, res) {
94
+ try {
95
+ const result = await masterService.addPermission({ ...req.user, ...req.body });
96
+ response.success(req, res, result.code, result.data, result.message);
97
+ } catch (err) {
98
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
99
+ }
100
+ }
101
+ async getPermission(req, res) {
102
+ try {
103
+ const result = await masterService.getPermissionService();
104
+ response.success(req, res, result.code, result.data, result.message);
105
+ } catch (err) {
106
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
107
+ }
108
+ }
109
+ async getPermissionById(req, res) {
110
+ try {
111
+ const result = await masterService.getPermissionByIdService({ ...req.params });
112
+ response.success(req, res, result.code, result.data, result.message);
113
+ } catch (err) {
114
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
115
+ }
116
+ }
117
+ async updatePermissionById(req, res) {
118
+ try {
119
+ const result = await masterService.updatePermissionByIdService({
120
+ ...req.params,
121
+ ...req.body,
122
+ });
123
+ response.success(req, res, result.code, result.data, result.message);
124
+ } catch (err) {
125
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
126
+ }
127
+ }
128
+ async deletePermissionById(req, res) {
129
+ try {
130
+ const result = await masterService.deletePermissionByIdService({
131
+ ...req.params,
132
+ });
133
+ response.success(req, res, result.code, result.data, result.message);
134
+ } catch (err) {
135
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err);
136
+ }
137
+ }
138
+ }
139
139
  module.exports = new MasterController();
@@ -1,24 +1,24 @@
1
- const { migrationService } = require("../services");
2
- const errorCodes = require("../config/errorCodes");
3
- const response = require("../utils/response");
4
- class MigrationController {
5
- async migrateAllChurchModels(req, res) {
6
- try {
7
- const result = await migrationService.migrateAllChurchModels();
8
- response.success(req, res, result.code, result.data, result.message);
9
- } catch (err) {
10
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
11
- }
12
- }
13
-
14
- async migrateModelsByChurchId(req, res) {
15
- try {
16
- const { churchId } = req.params;
17
- const result = await migrationService.migrateModelsByChurchId(churchId);
18
- response.success(req, res, result.code, result.data, result.message);
19
- } catch (err) {
20
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
21
- }
22
- }
23
- }
24
- module.exports = new MigrationController();
1
+ const { migrationService } = require("../services");
2
+ const errorCodes = require("../config/errorCodes");
3
+ const response = require("../utils/response");
4
+ class MigrationController {
5
+ async migrateAllChurchModels(req, res) {
6
+ try {
7
+ const result = await migrationService.migrateAllChurchModels();
8
+ response.success(req, res, result.code, result.data, result.message);
9
+ } catch (err) {
10
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
11
+ }
12
+ }
13
+
14
+ async migrateModelsByChurchId(req, res) {
15
+ try {
16
+ const { churchId } = req.params;
17
+ const result = await migrationService.migrateModelsByChurchId(churchId);
18
+ response.success(req, res, result.code, result.data, result.message);
19
+ } catch (err) {
20
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
21
+ }
22
+ }
23
+ }
24
+ module.exports = new MigrationController();
@@ -1,33 +1,33 @@
1
- const { seedService } = require("../services");
2
- const errorCodes = require("../config/errorCodes");
3
- const response = require("../utils/response");
4
- class SeedController {
5
- async seedCommonDb(req, res) {
6
- try {
7
- const result = await seedService.seedCommonDb();
8
- response.success(req, res, result.code, result.data, result.message);
9
- } catch (err) {
10
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
11
- }
12
- }
13
-
14
- async seedAllChurch(req, res) {
15
- try {
16
- const result = await seedService.seedAllChurch();
17
- response.success(req, res, result.code, result.data, result.message);
18
- } catch (err) {
19
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
20
- }
21
- }
22
-
23
- async seedByChurchId(req, res) {
24
- try {
25
- const { churchId } = req.params;
26
- const result = await seedService.seedByChurchId(churchId);
27
- response.success(req, res, result.code, result.data, result.message);
28
- } catch (err) {
29
- response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
30
- }
31
- }
32
- }
33
- module.exports = new SeedController();
1
+ const { seedService } = require("../services");
2
+ const errorCodes = require("../config/errorCodes");
3
+ const response = require("../utils/response");
4
+ class SeedController {
5
+ async seedCommonDb(req, res) {
6
+ try {
7
+ const result = await seedService.seedCommonDb();
8
+ response.success(req, res, result.code, result.data, result.message);
9
+ } catch (err) {
10
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
11
+ }
12
+ }
13
+
14
+ async seedAllChurch(req, res) {
15
+ try {
16
+ const result = await seedService.seedAllChurch();
17
+ response.success(req, res, result.code, result.data, result.message);
18
+ } catch (err) {
19
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
20
+ }
21
+ }
22
+
23
+ async seedByChurchId(req, res) {
24
+ try {
25
+ const { churchId } = req.params;
26
+ const result = await seedService.seedByChurchId(churchId);
27
+ response.success(req, res, result.code, result.data, result.message);
28
+ } catch (err) {
29
+ response.error(req, res, errorCodes.HTTP_INTERNAL_SERVER_ERROR, err.message);
30
+ }
31
+ }
32
+ }
33
+ module.exports = new SeedController();
package/db-setup.js CHANGED
@@ -1,87 +1,87 @@
1
- const { exec } = require("child_process");
2
- const { Sequelize } = require("sequelize");
3
- const env = process.env.NODE_ENV || "development";
4
- const config = require("./config/config")[env];
5
- const rootSequelize = new Sequelize("postgres", config.username, "root", {
6
- host: config.host,
7
- dialect: config.dialect,
8
- logging: false,
9
- });
10
-
11
- async function ensureDatabaseExists() {
12
- const { username, password, host, dialect, database } = config;
13
-
14
- const sequelize = new Sequelize("postgres", username, password, { host, dialect });
15
-
16
- try {
17
- const [results] = await rootSequelize.query(
18
- `SELECT 1 FROM pg_database WHERE datname = '${database}';`
19
- );
20
-
21
- if (results.length === 0) {
22
- console.log(`Database "${database}" does not exist. Creating...`);
23
- await sequelize.query(`CREATE DATABASE "${database}" TEMPLATE template0`);
24
- console.log(`Database "${database}" created successfully.`);
25
- } else {
26
- console.log(`Database "${database}" already exists.`);
27
- }
28
- return results.length > 0;
29
- } catch (error) {
30
- console.error("Error checking or creating the database:", error);
31
- process.exit(1);
32
- } finally {
33
- await rootSequelize.close();
34
- }
35
- }
36
-
37
- function runMigrations() {
38
- return new Promise((resolve, reject) => {
39
- const { url } = config;
40
- console.log("Running migrations...");
41
- exec(
42
- `npx sequelize-cli db:migrate --migrations-path ./migrations/common --url ${url}`,
43
- (error, stdout, stderr) => {
44
- if (error) {
45
- console.error("Migration error:", stderr);
46
- reject(error);
47
- } else {
48
- console.log("Migrations completed successfully.");
49
- console.log(stdout);
50
- resolve();
51
- }
52
- }
53
- );
54
- });
55
- }
56
-
57
- function runSeed() {
58
- return new Promise((resolve, reject) => {
59
- const { url } = config;
60
- console.log("Running seed...");
61
- exec(
62
- `npx sequelize-cli db:seed:all --seeders-path ./seeders/common --url ${url}`,
63
- (error, stdout, stderr) => {
64
- if (error) {
65
- console.error(`Error applying seed for common db`, error.message);
66
- reject(error);
67
- } else {
68
- console.log("Seed applied for common db");
69
- console.log(stdout);
70
- resolve();
71
- }
72
- }
73
- );
74
- });
75
- }
76
-
77
- (async function main() {
78
- try {
79
- await ensureDatabaseExists();
80
- await runMigrations();
81
- await runSeed();
82
- console.log("Database setup and migrations complete.");
83
- } catch (error) {
84
- console.error("Error during database setup or migrations:", error);
85
- process.exit(1);
86
- }
87
- })();
1
+ const { exec } = require("child_process");
2
+ const { Sequelize } = require("sequelize");
3
+ const env = process.env.NODE_ENV || "development";
4
+ const config = require("./config/config")[env];
5
+ const rootSequelize = new Sequelize("postgres", config.username, "root", {
6
+ host: config.host,
7
+ dialect: config.dialect,
8
+ logging: false,
9
+ });
10
+
11
+ async function ensureDatabaseExists() {
12
+ const { username, password, host, dialect, database } = config;
13
+
14
+ const sequelize = new Sequelize("postgres", username, password, { host, dialect });
15
+
16
+ try {
17
+ const [results] = await rootSequelize.query(
18
+ `SELECT 1 FROM pg_database WHERE datname = '${database}';`
19
+ );
20
+
21
+ if (results.length === 0) {
22
+ console.log(`Database "${database}" does not exist. Creating...`);
23
+ await sequelize.query(`CREATE DATABASE "${database}" TEMPLATE template0`);
24
+ console.log(`Database "${database}" created successfully.`);
25
+ } else {
26
+ console.log(`Database "${database}" already exists.`);
27
+ }
28
+ return results.length > 0;
29
+ } catch (error) {
30
+ console.error("Error checking or creating the database:", error);
31
+ process.exit(1);
32
+ } finally {
33
+ await rootSequelize.close();
34
+ }
35
+ }
36
+
37
+ function runMigrations() {
38
+ return new Promise((resolve, reject) => {
39
+ const { url } = config;
40
+ console.log("Running migrations...");
41
+ exec(
42
+ `npx sequelize-cli db:migrate --migrations-path ./migrations/common --url ${url}`,
43
+ (error, stdout, stderr) => {
44
+ if (error) {
45
+ console.error("Migration error:", stderr);
46
+ reject(error);
47
+ } else {
48
+ console.log("Migrations completed successfully.");
49
+ console.log(stdout);
50
+ resolve();
51
+ }
52
+ }
53
+ );
54
+ });
55
+ }
56
+
57
+ function runSeed() {
58
+ return new Promise((resolve, reject) => {
59
+ const { url } = config;
60
+ console.log("Running seed...");
61
+ exec(
62
+ `npx sequelize-cli db:seed:all --seeders-path ./seeders/common --url ${url}`,
63
+ (error, stdout, stderr) => {
64
+ if (error) {
65
+ console.error(`Error applying seed for common db`, error.message);
66
+ reject(error);
67
+ } else {
68
+ console.log("Seed applied for common db");
69
+ console.log(stdout);
70
+ resolve();
71
+ }
72
+ }
73
+ );
74
+ });
75
+ }
76
+
77
+ (async function main() {
78
+ try {
79
+ await ensureDatabaseExists();
80
+ await runMigrations();
81
+ await runSeed();
82
+ console.log("Database setup and migrations complete.");
83
+ } catch (error) {
84
+ console.error("Error during database setup or migrations:", error);
85
+ process.exit(1);
86
+ }
87
+ })();