Skip to content

Commit 4b47376

Browse files
committed
Organize structure and use json
1 parent 8497f74 commit 4b47376

File tree

3 files changed

+68
-31
lines changed

3 files changed

+68
-31
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
*.dump
2+
*.json

index_constraint_migration.mjs

+57-31
Original file line numberDiff line numberDiff line change
@@ -4,48 +4,74 @@ $.verbose = false;
44
const log = console.log;
55
const error = chalk.bold.red;
66

7+
async function init() {
8+
log();
9+
log(chalk.cyan("Welcome to dms-psql-post-data"));
10+
log();
11+
}
712

8-
log();
9-
log(chalk.green("Welcome to dms-psql-post-data"));
10-
log();
13+
async function configure() {
14+
log(chalk.yellow("Reading your DB info..."));
1115

12-
log(chalk.yellow('Input your Source DB info'));
16+
const dbInfo = await fs.readJson("./info.json");
17+
const { srcDBHost, srcDBUser, srcDBName, srcDBPass } = dbInfo;
18+
const { tarDBHost, tarDBUser, tarDBName, tarDBPass } = dbInfo;
1319

14-
let srcDBHost = await question('[1/8] Source DB Host: ');
15-
let srcDBUser = await question('[2/8] Source DB User: ');
16-
let srcDBName = await question('[3/8] Source DB Name: ');
17-
let srcDBPass = await question('[4/8] Source DB Password: ');
20+
log(chalk.green("Done"));
21+
log();
1822

19-
let tarDBHost = await question('[5/8] Target DB Host: ');
20-
let tarDBUser = await question('[6/8] Target DB User: ');
21-
let tarDBName = await question('[7/8] Target DB Name: ');
22-
let tarDBPass = await question('[8/8] Target DB Password: ');
23+
log(chalk.cyan("Input the number of job workers"));
24+
log(
25+
chalk.cyan(
26+
"NOTE: Increasing the number makes it faster, however it may cause DB locks."
27+
)
28+
);
2329

24-
log('Input the number of job workers');
25-
log(chalk.yellow('NOTE: Increasing the number makes it faster, however it may cause DB locks.'));
30+
let restoreJobWorkerNum = await question(chalk.cyan("Default value[1]: "));
31+
restoreJobWorkerNum = restoreJobWorkerNum ? restoreJobWorkerNum : 1;
2632

27-
let restoreJobWorkerNum = await question('Default value[1]: ');
28-
restoreJobWorkerNum = restoreJobWorkerNum ? restoreJobWorkerNum : 1;
33+
return {
34+
...dbInfo,
35+
restoreJobWorkerNum,
36+
};
37+
}
2938

30-
process.env.PGPASSWORD = srcDBPass
31-
log(chalk.yellow('Dumping Source DB Post-data(Index, Constraint)...'));
39+
async function dumpPostData({ srcDBHost, srcDBUser, srcDBName }) {
40+
process.env.PGPASSWORD = srcDBPass;
41+
log(chalk.yellow("Dumping Source DB Post-data(Index, Constraint)..."));
3242

33-
try {
34-
await $`pg_dump -h ${srcDBHost} -U ${srcDBUser} -Fc ${srcDBName} --section=post-data > postdata.dump`;
35-
} catch (p) {
36-
log(error('Exception detected: Is your Source DB information correct?'));
37-
log(error(`Error: ${p.stderr}`));
43+
try {
44+
await $`pg_dump -h ${srcDBHost} -U ${srcDBUser} -Fc ${srcDBName} --section=post-data > postdata.dump`;
45+
} catch (p) {
46+
log(error("Exception detected: Is your Source DB information correct?"));
47+
log(error(`Error: ${p.stderr}`));
48+
}
3849
}
3950

40-
process.env.PGPASSWORD = tarDBPass
41-
log(chalk.yellow('Restoring Post-data on Target DB...'));
51+
async function restorePostData({
52+
tarDBHost,
53+
tarDBUser,
54+
tarDBName,
55+
tarDBPass,
56+
restoreJobWorkerNum,
57+
}) {
58+
process.env.PGPASSWORD = tarDBPass;
59+
log(chalk.yellow("Restoring Post-data on Target DB..."));
4260

43-
try {
44-
await $`pg_restore -h ${tarDBHost} -U ${tarDBUser} -d ${tarDBName} -j ${restoreJobWorkerNum} -v postdata.dump`;
45-
} catch (p) {
46-
log(error('Exception detected: Is your Target DB information correct?'));
47-
log(error(`Error: ${p.stderr}`));
61+
try {
62+
await $`pg_restore -h ${tarDBHost} -U ${tarDBUser} -d ${tarDBName} -j ${restoreJobWorkerNum} -v postdata.dump`;
63+
} catch (p) {
64+
log(error("Exception detected: Is your Target DB information correct?"));
65+
log(error(`Error: ${p.stderr}`));
66+
}
4867
}
4968

69+
await init();
70+
71+
const config = await configure();
72+
73+
await dumpPostData(config);
74+
await restorePostData(config);
75+
5076
log();
51-
log(chalk.yellow('Finished'))
77+
log(chalk.yellow("Finished"));

info.json

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"srcDBHost": "",
3+
"srcDBName": "",
4+
"srcDBUser": "",
5+
"srcDBPass": "",
6+
"tarDBHost": "",
7+
"tarDBName": "",
8+
"tarDBUser": "",
9+
"tarDBPass": ""
10+
}

0 commit comments

Comments
 (0)