@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.
- package/Dockerfile +21 -21
- package/Makefile +132 -132
- package/app.js +37 -37
- package/config/config.js +33 -33
- package/config/errorCodes.js +65 -65
- package/config/errorMsgs.js +82 -82
- package/constants/index.js +94 -94
- package/controllers/church.js +100 -100
- package/controllers/index.js +6 -6
- package/controllers/master.js +138 -138
- package/controllers/migration.js +24 -24
- package/controllers/seed.js +33 -33
- package/db-setup.js +87 -87
- package/deployment/docker-compose.local.yml +64 -64
- package/deployment/docker-compose.yml +62 -62
- package/deployment/nginx/nginx-certs/localhost.crt +22 -22
- package/deployment/nginx/nginx-certs/localhost.key +28 -28
- package/deployment/nginx/nginx.local.conf +72 -72
- package/middlewares/church-filter.js +16 -16
- package/migrations/church/20221226151615-create-province.js +27 -27
- package/migrations/church/20221226151616-create-city.js +41 -41
- package/migrations/church/20221226151617-create-subRole.js +25 -25
- package/migrations/church/20221226151618-create-membership.js +68 -68
- package/migrations/church/20221226151619-create-member.js +140 -140
- package/migrations/church/20221227151615-create-user.js +60 -60
- package/migrations/church/20230826140644-create-eventsUpdates.js +29 -29
- package/migrations/church/20230904143429-create-ministries.js +26 -26
- package/migrations/church/20231021160018-create-gallery.js +28 -28
- package/migrations/church/20231105074019-create-feedback.js +28 -28
- package/migrations/church/20231111113342-create-banner.js +29 -29
- package/migrations/church/20231216105640-create-directoryBoard.js +31 -31
- package/migrations/church/20240214160101-create-volunteer.js +31 -31
- package/migrations/church/20240330111437-create-download.js +29 -29
- package/migrations/church/20240427170617-create-links.js +26 -26
- package/migrations/church/20240815170617-create-userTransfer.js +63 -63
- package/migrations/church/20240815170620-create-subRolePermission.js +40 -40
- package/migrations/church/20240915170620-create-transferType.js +25 -25
- package/migrations/church/20240917170620-create-accounts.js +27 -27
- package/migrations/church/20240918170621-create-church.js +54 -54
- package/migrations/church/20240918170622-create-group.js +61 -61
- package/migrations/church/20240918170623-create-groupMembers.js +74 -74
- package/migrations/church/20240918170627-create-pledge.js +96 -96
- package/migrations/church/20240919170627-create-contributionBatch.js +42 -42
- package/migrations/church/20240919170628-create-contributionTransaction.js +82 -82
- package/migrations/church/20240919170629-create-contributionTransactionLine.js +74 -74
- package/migrations/church/20240919170630-update-groupMembers.js +77 -77
- package/migrations/church/20241204170631-create-pledgeAccount.js +55 -55
- package/migrations/church/20241204170632-create-memberStatus.js +26 -0
- package/migrations/church/20241204170633-update-member.js +33 -0
- package/migrations/church/20241204170634-update-membership.js +33 -0
- package/migrations/church/20241204170635-update-pledge.js +33 -0
- package/migrations/church/20241204170636-update-contributionTransactionLine.js +33 -0
- package/migrations/common/20221226140655-create-subscriptionPlan.js +31 -31
- package/migrations/common/20221226143006-create-role.js +25 -25
- package/migrations/common/20240815170619-create-permission.js +27 -27
- package/migrations/common/20240815170620-create-church.js +56 -56
- package/migrations/common/20240815170621-create-churchDomain.js +40 -40
- package/migrations/common/20240918170621-create-churchPermission.js +53 -53
- package/migrations/common/20240918170622-create-user.js +35 -35
- package/migrations/common/20240918170627-create-subscriptionPlanPermission.js +53 -53
- package/models/church/accounts.js +23 -27
- package/models/church/banner.js +29 -29
- package/models/church/church.js +62 -62
- package/models/church/city.js +23 -23
- package/models/church/contributionBatch.js +45 -45
- package/models/church/contributionTransaction.js +90 -90
- package/models/church/contributionTransactionLine.js +81 -80
- package/models/church/directoryBoard.js +33 -33
- package/models/church/download.js +35 -35
- package/models/church/eventsUpdates.js +29 -29
- package/models/church/feedback.js +27 -27
- package/models/church/gallery.js +33 -33
- package/models/church/group.js +78 -78
- package/models/church/groupMembers.js +73 -73
- package/models/church/index.js +30 -30
- package/models/church/links.js +22 -22
- package/models/church/member.js +161 -171
- package/models/church/memberStatus.js +22 -0
- package/models/church/membership.js +80 -81
- package/models/church/ministries.js +16 -16
- package/models/church/pledge.js +65 -65
- package/models/church/pledgeAccount.js +45 -37
- package/models/church/province.js +23 -23
- package/models/church/subRole.js +21 -21
- package/models/church/subRolePermission.js +22 -22
- package/models/church/transferType.js +15 -15
- package/models/church/user.js +78 -78
- package/models/church/userTransfer.js +45 -45
- package/models/church/volunteer.js +33 -33
- package/models/common/church.js +58 -58
- package/models/common/churchDomain.js +21 -21
- package/models/common/churchPermission.js +26 -26
- package/models/common/index.js +40 -40
- package/models/common/permission.js +17 -17
- package/models/common/role.js +15 -15
- package/models/common/subscriptionPlan.js +34 -34
- package/models/common/subscriptionPlanPermission.js +33 -33
- package/models/common/user.js +39 -39
- package/package.json +41 -41
- package/public/swagger/church.json +521 -521
- package/public/swagger/master.json +537 -537
- package/public/swagger/migration.json +83 -83
- package/public/swagger/seed.json +98 -98
- package/queues/db-create.js +9 -9
- package/queues/index.js +5 -5
- package/queues/master.js +9 -9
- package/queues/migration.js +9 -9
- package/queues/seed.js +9 -9
- package/redis/config.js +5 -5
- package/routes/index.js +30 -30
- package/routes/v1/church.js +45 -45
- package/routes/v1/index.js +7 -7
- package/routes/v1/master.js +68 -68
- package/routes/v1/migration.js +10 -10
- package/routes/v1/seed.js +12 -12
- package/seeders/church/20241005124245-province.js +101 -101
- package/seeders/church/20241005124547-city.js +87 -87
- package/seeders/church/20241005131418-transferType.js +40 -40
- package/seeders/church/20241005131419-memberStatus.js +34 -0
- package/seeders/common/20241005123516-subscriptionPlan.js +43 -43
- package/seeders/common/20241005124105-role.js +38 -38
- package/seeders/common/20241005153047-permission.js +252 -242
- package/seeders/common/20241005153048-user.js +48 -48
- package/services/church.js +312 -312
- package/services/index.js +6 -6
- package/services/master.js +344 -344
- package/services/migration.js +30 -30
- package/services/seed.js +39 -39
- package/utils/churchManager.js +98 -98
- package/utils/crypto.js +40 -40
- package/utils/docUpload.js +51 -51
- package/utils/encryptDecrypt.js +26 -26
- package/utils/index.js +33 -33
- package/utils/logger.js +104 -104
- package/utils/response.js +108 -108
- package/utils/swagger.js +25 -25
- package/utils/verifyToken.js +58 -58
- package/validators/church.js +154 -154
- package/validators/index.js +3 -3
- package/validators/master.js +152 -152
- package/workers/db-create.js +37 -37
- package/workers/index.js +4 -4
- package/workers/master.js +50 -50
- package/workers/migrations.js +63 -63
- package/workers/seed.js +85 -85
package/workers/db-create.js
CHANGED
|
@@ -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
|
+
);
|
package/workers/migrations.js
CHANGED
|
@@ -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
|
+
);
|