@churchsoln/dbms 1.0.47 → 1.0.49

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 +161 -171
  78. package/models/church/memberStatus.js +22 -0
  79. package/models/church/membership.js +80 -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,37 +1,37 @@
1
- const { Worker } = require("bullmq");
2
- const redisConfig = require("../redis/config");
3
- const commonDb = require("../models/common");
4
- const churchManager = require("../utils/churchManager");
5
- const { WORKERS, ONBOARD_STATUS } = require("../constants");
6
- new Worker(
7
- WORKERS.DB_CREATE,
8
- async (job) => {
9
- const { churchId, name } = job.data;
10
- try {
11
- await commonDb.sequelize.authenticate();
12
- await commonDb.church.update(
13
- { dbCreationStatus: ONBOARD_STATUS.DB_CREATION_IN_PROGRESS },
14
- { where: { id: churchId } }
15
- );
16
- await commonDb.sequelize.query(`CREATE DATABASE "${name}" TEMPLATE template0`);
17
- await commonDb.church.update(
18
- { dbCreationStatus: ONBOARD_STATUS.DB_CREATION_COMPLETED },
19
- { where: { id: churchId } }
20
- );
21
- console.log(`Database "${name}" created successfully.`);
22
- return true;
23
- } catch (error) {
24
- if (error.original && error.original.code === "42P04") {
25
- console.log(`Database "${name}" already exists.`);
26
- } else {
27
- console.error("Error creating database:", error.message);
28
- }
29
- await commonDb.church.update(
30
- { dbCreationStatus: ONBOARD_STATUS.DB_CREATION_FAILED },
31
- { where: { id: churchId } }
32
- );
33
- return false;
34
- }
35
- },
36
- { connection: redisConfig }
37
- );
1
+ const { Worker } = require("bullmq");
2
+ const redisConfig = require("../redis/config");
3
+ const commonDb = require("../models/common");
4
+ const churchManager = require("../utils/churchManager");
5
+ const { WORKERS, ONBOARD_STATUS } = require("../constants");
6
+ new Worker(
7
+ WORKERS.DB_CREATE,
8
+ async (job) => {
9
+ const { churchId, name } = job.data;
10
+ try {
11
+ await commonDb.sequelize.authenticate();
12
+ await commonDb.church.update(
13
+ { dbCreationStatus: ONBOARD_STATUS.DB_CREATION_IN_PROGRESS },
14
+ { where: { id: churchId } }
15
+ );
16
+ await commonDb.sequelize.query(`CREATE DATABASE "${name}" TEMPLATE template0`);
17
+ await commonDb.church.update(
18
+ { dbCreationStatus: ONBOARD_STATUS.DB_CREATION_COMPLETED },
19
+ { where: { id: churchId } }
20
+ );
21
+ console.log(`Database "${name}" created successfully.`);
22
+ return true;
23
+ } catch (error) {
24
+ if (error.original && error.original.code === "42P04") {
25
+ console.log(`Database "${name}" already exists.`);
26
+ } else {
27
+ console.error("Error creating database:", error.message);
28
+ }
29
+ await commonDb.church.update(
30
+ { dbCreationStatus: ONBOARD_STATUS.DB_CREATION_FAILED },
31
+ { where: { id: churchId } }
32
+ );
33
+ return false;
34
+ }
35
+ },
36
+ { connection: redisConfig }
37
+ );
package/workers/index.js CHANGED
@@ -1,4 +1,4 @@
1
- require("./db-create");
2
- require("./migrations");
3
- require("./seed");
4
- require("./master");
1
+ require("./db-create");
2
+ require("./migrations");
3
+ require("./seed");
4
+ require("./master");
package/workers/master.js CHANGED
@@ -1,50 +1,50 @@
1
- const { Worker } = require("bullmq");
2
- const redisConfig = require("../redis/config");
3
- const { WORKERS, QUEUES } = require("../constants");
4
- const {
5
- dbCreateQueue,
6
- dbCreateQueueEvents,
7
- migrationsQueue,
8
- migrationsQueueEvents,
9
- seedQueue,
10
- seedQueueEvents,
11
- } = require("../queues/index");
12
- const waitForJobCompletion = async (queueEvents, jobId) => {
13
- return new Promise((resolve, reject) => {
14
- queueEvents.on("completed", (event) => {
15
- if (event.jobId === jobId) {
16
- resolve();
17
- }
18
- });
19
-
20
- queueEvents.on("failed", (event) => {
21
- if (event.jobId === jobId) {
22
- reject(new Error(`Job ${jobId} failed`));
23
- }
24
- });
25
- });
26
- };
27
-
28
- new Worker(
29
- WORKERS.MASTER,
30
- async (job) => {
31
- const jobs = job.data;
32
- try {
33
- for (const job of jobs) {
34
- const { queue, queueEvents } = {
35
- [QUEUES.DB_CREATE]: { queue: dbCreateQueue, queueEvents: dbCreateQueueEvents },
36
- [QUEUES.MIGRATION]: {
37
- queue: migrationsQueue,
38
- queueEvents: migrationsQueueEvents,
39
- },
40
- [QUEUES.SEED]: { queue: seedQueue, queueEvents: seedQueueEvents },
41
- }[job.queue];
42
- const currentJob = await queue.add(job.queue, job.data);
43
- await waitForJobCompletion(queueEvents, currentJob.id);
44
- }
45
- } catch (error) {
46
- console.error("Error while processing master job: ", error.message);
47
- }
48
- },
49
- { connection: redisConfig }
50
- );
1
+ const { Worker } = require("bullmq");
2
+ const redisConfig = require("../redis/config");
3
+ const { WORKERS, QUEUES } = require("../constants");
4
+ const {
5
+ dbCreateQueue,
6
+ dbCreateQueueEvents,
7
+ migrationsQueue,
8
+ migrationsQueueEvents,
9
+ seedQueue,
10
+ seedQueueEvents,
11
+ } = require("../queues/index");
12
+ const waitForJobCompletion = async (queueEvents, jobId) => {
13
+ return new Promise((resolve, reject) => {
14
+ queueEvents.on("completed", (event) => {
15
+ if (event.jobId === jobId) {
16
+ resolve();
17
+ }
18
+ });
19
+
20
+ queueEvents.on("failed", (event) => {
21
+ if (event.jobId === jobId) {
22
+ reject(new Error(`Job ${jobId} failed`));
23
+ }
24
+ });
25
+ });
26
+ };
27
+
28
+ new Worker(
29
+ WORKERS.MASTER,
30
+ async (job) => {
31
+ const jobs = job.data;
32
+ try {
33
+ for (const job of jobs) {
34
+ const { queue, queueEvents } = {
35
+ [QUEUES.DB_CREATE]: { queue: dbCreateQueue, queueEvents: dbCreateQueueEvents },
36
+ [QUEUES.MIGRATION]: {
37
+ queue: migrationsQueue,
38
+ queueEvents: migrationsQueueEvents,
39
+ },
40
+ [QUEUES.SEED]: { queue: seedQueue, queueEvents: seedQueueEvents },
41
+ }[job.queue];
42
+ const currentJob = await queue.add(job.queue, job.data);
43
+ await waitForJobCompletion(queueEvents, currentJob.id);
44
+ }
45
+ } catch (error) {
46
+ console.error("Error while processing master job: ", error.message);
47
+ }
48
+ },
49
+ { connection: redisConfig }
50
+ );
@@ -1,63 +1,63 @@
1
- const { Worker } = require("bullmq");
2
- const redisConfig = require("../redis/config");
3
- const commonDb = require("../models/common");
4
- const { exec } = require("child_process");
5
- const { WORKERS, ONBOARD_STATUS } = require("../constants");
6
-
7
- const migrateDb = async (churchData) => {
8
- return new Promise(async (resolve, reject) => {
9
- const { id, connectionUrl, name } = churchData;
10
- console.log(`Applying migrations for church: ${name}`);
11
- await commonDb.church.update(
12
- { migrationStatus: ONBOARD_STATUS.MIGRATION_IN_PROGRESS },
13
- { where: { id } }
14
- );
15
- exec(
16
- `npx sequelize-cli db:migrate --url ${connectionUrl} --migrations-path ./migrations/church`,
17
- async (error, stdout, stderr) => {
18
- if (error) {
19
- console.error(`Error applying migrations for church: ${name}`, error.message);
20
- await commonDb.church.update(
21
- { migrationStatus: ONBOARD_STATUS.MIGRATION_FAILED },
22
- { where: { id } }
23
- );
24
- reject(error);
25
- }
26
- console.log(`Migrations applied for church: ${name}`);
27
- await commonDb.church.update(
28
- { migrationStatus: ONBOARD_STATUS.MIGRATION_COMPLETED },
29
- { where: { id } }
30
- );
31
- resolve();
32
- }
33
- );
34
- });
35
- };
36
- new Worker(
37
- WORKERS.MIGRATION,
38
- async (job) => {
39
- const { churchId } = job.data;
40
- try {
41
- if (churchId) {
42
- const churchData = await commonDb.church.findOne({
43
- where: { id: churchId },
44
- attributes: commonDb.church.selectedFields,
45
- raw: true,
46
- });
47
- await migrateDb(churchData);
48
- return true;
49
- } else {
50
- const allChurchData = await commonDb.church.findAll({
51
- attributes: commonDb.church.selectedFields,
52
- raw: true,
53
- });
54
- await Promise.all(allChurchData.map((church) => migrateDb(church)));
55
- return;
56
- }
57
- } catch (error) {
58
- console.error("Error applying migrations:", error.message);
59
- return false;
60
- }
61
- },
62
- { connection: redisConfig }
63
- );
1
+ const { Worker } = require("bullmq");
2
+ const redisConfig = require("../redis/config");
3
+ const commonDb = require("../models/common");
4
+ const { exec } = require("child_process");
5
+ const { WORKERS, ONBOARD_STATUS } = require("../constants");
6
+
7
+ const migrateDb = async (churchData) => {
8
+ return new Promise(async (resolve, reject) => {
9
+ const { id, connectionUrl, name } = churchData;
10
+ console.log(`Applying migrations for church: ${name}`);
11
+ await commonDb.church.update(
12
+ { migrationStatus: ONBOARD_STATUS.MIGRATION_IN_PROGRESS },
13
+ { where: { id } }
14
+ );
15
+ exec(
16
+ `npx sequelize-cli db:migrate --url ${connectionUrl} --migrations-path ./migrations/church`,
17
+ async (error, stdout, stderr) => {
18
+ if (error) {
19
+ console.error(`Error applying migrations for church: ${name}`, error.message);
20
+ await commonDb.church.update(
21
+ { migrationStatus: ONBOARD_STATUS.MIGRATION_FAILED },
22
+ { where: { id } }
23
+ );
24
+ reject(error);
25
+ }
26
+ console.log(`Migrations applied for church: ${name}`);
27
+ await commonDb.church.update(
28
+ { migrationStatus: ONBOARD_STATUS.MIGRATION_COMPLETED },
29
+ { where: { id } }
30
+ );
31
+ resolve();
32
+ }
33
+ );
34
+ });
35
+ };
36
+ new Worker(
37
+ WORKERS.MIGRATION,
38
+ async (job) => {
39
+ const { churchId } = job.data;
40
+ try {
41
+ if (churchId) {
42
+ const churchData = await commonDb.church.findOne({
43
+ where: { id: churchId },
44
+ attributes: commonDb.church.selectedFields,
45
+ raw: true,
46
+ });
47
+ await migrateDb(churchData);
48
+ return true;
49
+ } else {
50
+ const allChurchData = await commonDb.church.findAll({
51
+ attributes: commonDb.church.selectedFields,
52
+ raw: true,
53
+ });
54
+ await Promise.all(allChurchData.map((church) => migrateDb(church)));
55
+ return;
56
+ }
57
+ } catch (error) {
58
+ console.error("Error applying migrations:", error.message);
59
+ return false;
60
+ }
61
+ },
62
+ { connection: redisConfig }
63
+ );
package/workers/seed.js CHANGED
@@ -1,85 +1,85 @@
1
- const { Worker } = require("bullmq");
2
- const redisConfig = require("../redis/config");
3
- const commonDb = require("../models/common");
4
- const { exec } = require("child_process");
5
- const { WORKERS, ONBOARD_STATUS } = require("../constants");
6
-
7
- const seedDb = async (seedData) => {
8
- return new Promise(async (resolve, reject) => {
9
- const { id, connectionUrl, name, isCommonDb = false } = seedData;
10
- console.log(
11
- `Applying seed for ${isCommonDb ? "common" : "church"} db: ${!isCommonDb ? name : ""}`
12
- );
13
- if (!isCommonDb) {
14
- await commonDb.church.update(
15
- { seedStatus: ONBOARD_STATUS.SEED_IN_PROGRESS },
16
- { where: { id } }
17
- );
18
- }
19
- exec(
20
- `DEBUG=sequelize:* npx sequelize-cli db:seed:all --url ${connectionUrl} --seeders-path ${
21
- isCommonDb ? "./seeders/common" : "./seeders/church"
22
- }`,
23
- async (error, stdout, stderr) => {
24
- if (error) {
25
- console.error(
26
- `Error applying seed for ${isCommonDb ? "common" : "church"} db: ${
27
- !isCommonDb ? name : ""
28
- }`,
29
- error.message
30
- );
31
- if (!isCommonDb) {
32
- await commonDb.church.update(
33
- { seedStatus: ONBOARD_STATUS.SEED_FAILED },
34
- { where: { id } }
35
- );
36
- }
37
- reject(error);
38
- }
39
- console.log(
40
- `Seed applied for ${isCommonDb ? "common" : "church"} db: ${
41
- !isCommonDb ? name : ""
42
- }`
43
- );
44
- if (!isCommonDb) {
45
- await commonDb.church.update(
46
- { seedStatus: ONBOARD_STATUS.SEED_COMPLETED },
47
- { where: { id } }
48
- );
49
- }
50
- resolve();
51
- }
52
- );
53
- });
54
- };
55
- new Worker(
56
- WORKERS.SEED,
57
- async (job) => {
58
- try {
59
- const { churchId, isCommonDb = false } = job.data;
60
- if (isCommonDb) {
61
- await seedDb({ isCommonDb, connectionUrl: commonDb.config.url });
62
- }
63
- if (churchId && !isCommonDb) {
64
- const churchData = await commonDb.church.findOne({
65
- where: { id: churchId },
66
- attributes: commonDb.church.selectedFields,
67
- raw: true,
68
- });
69
- await seedDb(churchData);
70
- }
71
- if (!churchId && !isCommonDb) {
72
- const allChurchData = await commonDb.church.findAll({
73
- attributes: commonDb.church.selectedFields,
74
- raw: true,
75
- });
76
- await Promise.all(allChurchData.map((church) => seedDb(church)));
77
- }
78
- return true;
79
- } catch (error) {
80
- console.error("Error applying seed:", error.message);
81
- return false;
82
- }
83
- },
84
- { connection: redisConfig }
85
- );
1
+ const { Worker } = require("bullmq");
2
+ const redisConfig = require("../redis/config");
3
+ const commonDb = require("../models/common");
4
+ const { exec } = require("child_process");
5
+ const { WORKERS, ONBOARD_STATUS } = require("../constants");
6
+
7
+ const seedDb = async (seedData) => {
8
+ return new Promise(async (resolve, reject) => {
9
+ const { id, connectionUrl, name, isCommonDb = false } = seedData;
10
+ console.log(
11
+ `Applying seed for ${isCommonDb ? "common" : "church"} db: ${!isCommonDb ? name : ""}`
12
+ );
13
+ if (!isCommonDb) {
14
+ await commonDb.church.update(
15
+ { seedStatus: ONBOARD_STATUS.SEED_IN_PROGRESS },
16
+ { where: { id } }
17
+ );
18
+ }
19
+ exec(
20
+ `DEBUG=sequelize:* npx sequelize-cli db:seed:all --url ${connectionUrl} --seeders-path ${
21
+ isCommonDb ? "./seeders/common" : "./seeders/church"
22
+ }`,
23
+ async (error, stdout, stderr) => {
24
+ if (error) {
25
+ console.error(
26
+ `Error applying seed for ${isCommonDb ? "common" : "church"} db: ${
27
+ !isCommonDb ? name : ""
28
+ }`,
29
+ error.message
30
+ );
31
+ if (!isCommonDb) {
32
+ await commonDb.church.update(
33
+ { seedStatus: ONBOARD_STATUS.SEED_FAILED },
34
+ { where: { id } }
35
+ );
36
+ }
37
+ reject(error);
38
+ }
39
+ console.log(
40
+ `Seed applied for ${isCommonDb ? "common" : "church"} db: ${
41
+ !isCommonDb ? name : ""
42
+ }`
43
+ );
44
+ if (!isCommonDb) {
45
+ await commonDb.church.update(
46
+ { seedStatus: ONBOARD_STATUS.SEED_COMPLETED },
47
+ { where: { id } }
48
+ );
49
+ }
50
+ resolve();
51
+ }
52
+ );
53
+ });
54
+ };
55
+ new Worker(
56
+ WORKERS.SEED,
57
+ async (job) => {
58
+ try {
59
+ const { churchId, isCommonDb = false } = job.data;
60
+ if (isCommonDb) {
61
+ await seedDb({ isCommonDb, connectionUrl: commonDb.config.url });
62
+ }
63
+ if (churchId && !isCommonDb) {
64
+ const churchData = await commonDb.church.findOne({
65
+ where: { id: churchId },
66
+ attributes: commonDb.church.selectedFields,
67
+ raw: true,
68
+ });
69
+ await seedDb(churchData);
70
+ }
71
+ if (!churchId && !isCommonDb) {
72
+ const allChurchData = await commonDb.church.findAll({
73
+ attributes: commonDb.church.selectedFields,
74
+ raw: true,
75
+ });
76
+ await Promise.all(allChurchData.map((church) => seedDb(church)));
77
+ }
78
+ return true;
79
+ } catch (error) {
80
+ console.error("Error applying seed:", error.message);
81
+ return false;
82
+ }
83
+ },
84
+ { connection: redisConfig }
85
+ );