@intecoag/inteco-cli 1.11.8 → 1.12.0-beta.2
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/README.md +13 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/adbBridge.d.ts +2 -0
- package/dist/modules/adbBridge.d.ts.map +1 -0
- package/dist/modules/adbBridge.js +40 -0
- package/dist/modules/adbBridge.js.map +1 -0
- package/dist/modules/adbBridge.test.d.ts +2 -0
- package/dist/modules/adbBridge.test.d.ts.map +1 -0
- package/dist/modules/adbBridge.test.js +39 -0
- package/dist/modules/adbBridge.test.js.map +1 -0
- package/dist/modules/adbIntentSender.d.ts +2 -0
- package/dist/modules/adbIntentSender.d.ts.map +1 -0
- package/dist/modules/adbIntentSender.js +67 -0
- package/dist/modules/adbIntentSender.js.map +1 -0
- package/dist/modules/adbIntentSender.test.d.ts +2 -0
- package/dist/modules/adbIntentSender.test.d.ts.map +1 -0
- package/dist/modules/adbIntentSender.test.js +48 -0
- package/dist/modules/adbIntentSender.test.js.map +1 -0
- package/dist/modules/azureSync.d.ts +16 -0
- package/dist/modules/azureSync.d.ts.map +1 -0
- package/{src → dist}/modules/azureSync.js +55 -136
- package/dist/modules/azureSync.js.map +1 -0
- package/dist/modules/azureSync.test.d.ts +2 -0
- package/dist/modules/azureSync.test.d.ts.map +1 -0
- package/dist/modules/azureSync.test.js +69 -0
- package/dist/modules/azureSync.test.js.map +1 -0
- package/dist/modules/bundleProduct.d.ts +2 -0
- package/dist/modules/bundleProduct.d.ts.map +1 -0
- package/{src → dist}/modules/bundleProduct.js +41 -80
- package/dist/modules/bundleProduct.js.map +1 -0
- package/dist/modules/bundleProduct.test.d.ts +2 -0
- package/dist/modules/bundleProduct.test.d.ts.map +1 -0
- package/dist/modules/bundleProduct.test.js +75 -0
- package/dist/modules/bundleProduct.test.js.map +1 -0
- package/dist/modules/changelog.d.ts +3 -0
- package/dist/modules/changelog.d.ts.map +1 -0
- package/dist/modules/changelog.js +45 -0
- package/dist/modules/changelog.js.map +1 -0
- package/dist/modules/changelog.test.d.ts +2 -0
- package/dist/modules/changelog.test.d.ts.map +1 -0
- package/dist/modules/changelog.test.js +33 -0
- package/dist/modules/changelog.test.js.map +1 -0
- package/dist/modules/configMutation.d.ts +5 -0
- package/dist/modules/configMutation.d.ts.map +1 -0
- package/{src → dist}/modules/configMutation.js +57 -104
- package/dist/modules/configMutation.js.map +1 -0
- package/dist/modules/configMutation.test.d.ts +2 -0
- package/dist/modules/configMutation.test.d.ts.map +1 -0
- package/dist/modules/configMutation.test.js +28 -0
- package/dist/modules/configMutation.test.js.map +1 -0
- package/dist/modules/csvMerger.d.ts +2 -0
- package/dist/modules/csvMerger.d.ts.map +1 -0
- package/dist/modules/csvMerger.js +104 -0
- package/dist/modules/csvMerger.js.map +1 -0
- package/dist/modules/csvMerger.test.d.ts +2 -0
- package/dist/modules/csvMerger.test.d.ts.map +1 -0
- package/dist/modules/csvMerger.test.js +76 -0
- package/dist/modules/csvMerger.test.js.map +1 -0
- package/dist/modules/deleteDB.d.ts +2 -0
- package/dist/modules/deleteDB.d.ts.map +1 -0
- package/dist/modules/deleteDB.js +75 -0
- package/dist/modules/deleteDB.js.map +1 -0
- package/dist/modules/deleteDB.test.d.ts +2 -0
- package/dist/modules/deleteDB.test.d.ts.map +1 -0
- package/dist/modules/deleteDB.test.js +78 -0
- package/dist/modules/deleteDB.test.js.map +1 -0
- package/dist/modules/dumpDB.d.ts +3 -0
- package/dist/modules/dumpDB.d.ts.map +1 -0
- package/{src → dist}/modules/dumpDB.js +64 -89
- package/dist/modules/dumpDB.js.map +1 -0
- package/dist/modules/dumpDB.test.d.ts +2 -0
- package/dist/modules/dumpDB.test.d.ts.map +1 -0
- package/dist/modules/dumpDB.test.js +104 -0
- package/dist/modules/dumpDB.test.js.map +1 -0
- package/dist/modules/dumpTableToCSV.d.ts +4 -0
- package/dist/modules/dumpTableToCSV.d.ts.map +1 -0
- package/dist/modules/dumpTableToCSV.js +135 -0
- package/dist/modules/dumpTableToCSV.js.map +1 -0
- package/dist/modules/dumpTableToCSV.test.d.ts +2 -0
- package/dist/modules/dumpTableToCSV.test.d.ts.map +1 -0
- package/dist/modules/dumpTableToCSV.test.js +15 -0
- package/dist/modules/dumpTableToCSV.test.js.map +1 -0
- package/dist/modules/extdSearch.d.ts +2 -0
- package/dist/modules/extdSearch.d.ts.map +1 -0
- package/{src → dist}/modules/extdSearch.js +60 -60
- package/dist/modules/extdSearch.js.map +1 -0
- package/dist/modules/extdSearch.test.d.ts +2 -0
- package/dist/modules/extdSearch.test.d.ts.map +1 -0
- package/dist/modules/extdSearch.test.js +114 -0
- package/dist/modules/extdSearch.test.js.map +1 -0
- package/dist/modules/githubDeploymentKey.d.ts +3 -0
- package/dist/modules/githubDeploymentKey.d.ts.map +1 -0
- package/dist/modules/githubDeploymentKey.js +241 -0
- package/dist/modules/githubDeploymentKey.js.map +1 -0
- package/dist/modules/githubDeploymentKey.test.d.ts +2 -0
- package/dist/modules/githubDeploymentKey.test.d.ts.map +1 -0
- package/dist/modules/githubDeploymentKey.test.js +50 -0
- package/dist/modules/githubDeploymentKey.test.js.map +1 -0
- package/dist/modules/githubDeploymentKeysList.d.ts +6 -0
- package/dist/modules/githubDeploymentKeysList.d.ts.map +1 -0
- package/dist/modules/githubDeploymentKeysList.js +185 -0
- package/dist/modules/githubDeploymentKeysList.js.map +1 -0
- package/dist/modules/githubDeploymentKeysList.test.d.ts +2 -0
- package/dist/modules/githubDeploymentKeysList.test.d.ts.map +1 -0
- package/dist/modules/githubDeploymentKeysList.test.js +70 -0
- package/dist/modules/githubDeploymentKeysList.test.js.map +1 -0
- package/dist/modules/githubSecurityAdvisories.d.ts +3 -0
- package/dist/modules/githubSecurityAdvisories.d.ts.map +1 -0
- package/dist/modules/githubSecurityAdvisories.js +145 -0
- package/dist/modules/githubSecurityAdvisories.js.map +1 -0
- package/dist/modules/githubSecurityAdvisories.test.d.ts +2 -0
- package/dist/modules/githubSecurityAdvisories.test.d.ts.map +1 -0
- package/dist/modules/githubSecurityAdvisories.test.js +67 -0
- package/dist/modules/githubSecurityAdvisories.test.js.map +1 -0
- package/dist/modules/graphqlSchemaExport.d.ts +2 -0
- package/dist/modules/graphqlSchemaExport.d.ts.map +1 -0
- package/dist/modules/graphqlSchemaExport.js +59 -0
- package/dist/modules/graphqlSchemaExport.js.map +1 -0
- package/dist/modules/graphqlSchemaExport.test.d.ts +2 -0
- package/dist/modules/graphqlSchemaExport.test.d.ts.map +1 -0
- package/dist/modules/graphqlSchemaExport.test.js +61 -0
- package/dist/modules/graphqlSchemaExport.test.js.map +1 -0
- package/dist/modules/importDB.d.ts +2 -0
- package/dist/modules/importDB.d.ts.map +1 -0
- package/{src → dist}/modules/importDB.js +48 -66
- package/dist/modules/importDB.js.map +1 -0
- package/dist/modules/importDB.test.d.ts +2 -0
- package/dist/modules/importDB.test.d.ts.map +1 -0
- package/dist/modules/importDB.test.js +65 -0
- package/dist/modules/importDB.test.js.map +1 -0
- package/dist/modules/rewriteConfig.d.ts +3 -0
- package/dist/modules/rewriteConfig.d.ts.map +1 -0
- package/dist/modules/rewriteConfig.js +75 -0
- package/dist/modules/rewriteConfig.js.map +1 -0
- package/dist/modules/rewriteConfig.test.d.ts +2 -0
- package/dist/modules/rewriteConfig.test.d.ts.map +1 -0
- package/dist/modules/rewriteConfig.test.js +62 -0
- package/dist/modules/rewriteConfig.test.js.map +1 -0
- package/dist/modules/setCLIConfig.d.ts +2 -0
- package/dist/modules/setCLIConfig.d.ts.map +1 -0
- package/dist/modules/setCLIConfig.js +29 -0
- package/dist/modules/setCLIConfig.js.map +1 -0
- package/dist/modules/setCLIConfig.test.d.ts +2 -0
- package/dist/modules/setCLIConfig.test.d.ts.map +1 -0
- package/dist/modules/setCLIConfig.test.js +40 -0
- package/dist/modules/setCLIConfig.test.js.map +1 -0
- package/dist/modules/syncConfig.d.ts +4 -0
- package/dist/modules/syncConfig.d.ts.map +1 -0
- package/{src → dist}/modules/syncConfig.js +76 -129
- package/dist/modules/syncConfig.js.map +1 -0
- package/dist/modules/syncConfig.test.d.ts +2 -0
- package/dist/modules/syncConfig.test.d.ts.map +1 -0
- package/dist/modules/syncConfig.test.js +71 -0
- package/dist/modules/syncConfig.test.js.map +1 -0
- package/dist/modules/t003Rewrite.d.ts +2 -0
- package/dist/modules/t003Rewrite.d.ts.map +1 -0
- package/dist/modules/t003Rewrite.js +53 -0
- package/dist/modules/t003Rewrite.js.map +1 -0
- package/dist/modules/t003Rewrite.test.d.ts +2 -0
- package/dist/modules/t003Rewrite.test.d.ts.map +1 -0
- package/dist/modules/t003Rewrite.test.js +43 -0
- package/dist/modules/t003Rewrite.test.js.map +1 -0
- package/dist/modules/t009Search.d.ts +2 -0
- package/dist/modules/t009Search.d.ts.map +1 -0
- package/dist/modules/t009Search.js +30 -0
- package/dist/modules/t009Search.js.map +1 -0
- package/dist/modules/t009Search.test.d.ts +2 -0
- package/dist/modules/t009Search.test.d.ts.map +1 -0
- package/dist/modules/t009Search.test.js +83 -0
- package/dist/modules/t009Search.test.js.map +1 -0
- package/{src → dist}/ressources/cmds.json +3 -0
- package/dist/utils/azure/azure.d.ts +24 -0
- package/dist/utils/azure/azure.d.ts.map +1 -0
- package/{src → dist}/utils/azure/azure.js +14 -21
- package/dist/utils/azure/azure.js.map +1 -0
- package/dist/utils/azure/azure.test.d.ts +2 -0
- package/dist/utils/azure/azure.test.d.ts.map +1 -0
- package/dist/utils/azure/azure.test.js +98 -0
- package/dist/utils/azure/azure.test.js.map +1 -0
- package/dist/utils/config/config.d.ts +27 -0
- package/dist/utils/config/config.d.ts.map +1 -0
- package/dist/utils/config/config.js +74 -0
- package/dist/utils/config/config.js.map +1 -0
- package/dist/utils/config/config.test.d.ts +2 -0
- package/dist/utils/config/config.test.d.ts.map +1 -0
- package/dist/utils/config/config.test.js +64 -0
- package/dist/utils/config/config.test.js.map +1 -0
- package/dist/utils/db/DB.d.ts +14 -0
- package/dist/utils/db/DB.d.ts.map +1 -0
- package/dist/utils/db/DB.js +61 -0
- package/dist/utils/db/DB.js.map +1 -0
- package/dist/utils/db/DB.test.d.ts +2 -0
- package/dist/utils/db/DB.test.d.ts.map +1 -0
- package/dist/utils/db/DB.test.js +73 -0
- package/dist/utils/db/DB.test.js.map +1 -0
- package/dist/utils/fs/FS.d.ts +15 -0
- package/dist/utils/fs/FS.d.ts.map +1 -0
- package/{src → dist}/utils/fs/FS.js +31 -45
- package/dist/utils/fs/FS.js.map +1 -0
- package/dist/utils/fs/FS.test.d.ts +2 -0
- package/dist/utils/fs/FS.test.d.ts.map +1 -0
- package/dist/utils/fs/FS.test.js +124 -0
- package/dist/utils/fs/FS.test.js.map +1 -0
- package/dist/utils/github/github.d.ts +29 -0
- package/dist/utils/github/github.d.ts.map +1 -0
- package/dist/utils/github/github.js +96 -0
- package/dist/utils/github/github.js.map +1 -0
- package/dist/utils/github/github.test.d.ts +2 -0
- package/dist/utils/github/github.test.d.ts.map +1 -0
- package/dist/utils/github/github.test.js +83 -0
- package/dist/utils/github/github.test.js.map +1 -0
- package/dist/utils/shell/DatabaseShell.d.ts +77 -0
- package/dist/utils/shell/DatabaseShell.d.ts.map +1 -0
- package/{src → dist}/utils/shell/DatabaseShell.js +73 -87
- package/dist/utils/shell/DatabaseShell.js.map +1 -0
- package/dist/utils/shell/DatabaseShell.test.d.ts +2 -0
- package/dist/utils/shell/DatabaseShell.test.d.ts.map +1 -0
- package/dist/utils/shell/DatabaseShell.test.js +78 -0
- package/dist/utils/shell/DatabaseShell.test.js.map +1 -0
- package/dist/utils/shell/DatabaseShellBuilder.d.ts +67 -0
- package/dist/utils/shell/DatabaseShellBuilder.d.ts.map +1 -0
- package/{src → dist}/utils/shell/DatabaseShellBuilder.js +50 -59
- package/dist/utils/shell/DatabaseShellBuilder.js.map +1 -0
- package/dist/utils/shell/DatabaseShellBuilder.test.d.ts +2 -0
- package/dist/utils/shell/DatabaseShellBuilder.test.d.ts.map +1 -0
- package/dist/utils/shell/DatabaseShellBuilder.test.js +55 -0
- package/dist/utils/shell/DatabaseShellBuilder.test.js.map +1 -0
- package/dist/utils/shell/Shell.d.ts +30 -0
- package/dist/utils/shell/Shell.d.ts.map +1 -0
- package/{src → dist}/utils/shell/Shell.js +14 -19
- package/dist/utils/shell/Shell.js.map +1 -0
- package/dist/utils/shell/Shell.test.d.ts +2 -0
- package/dist/utils/shell/Shell.test.d.ts.map +1 -0
- package/dist/utils/shell/Shell.test.js +65 -0
- package/dist/utils/shell/Shell.test.js.map +1 -0
- package/dist/utils/shell/ShellBuilder.d.ts +60 -0
- package/dist/utils/shell/ShellBuilder.d.ts.map +1 -0
- package/{src → dist}/utils/shell/ShellBuilder.js +23 -44
- package/dist/utils/shell/ShellBuilder.js.map +1 -0
- package/dist/utils/shell/ShellBuilder.test.d.ts +2 -0
- package/dist/utils/shell/ShellBuilder.test.d.ts.map +1 -0
- package/dist/utils/shell/ShellBuilder.test.js +39 -0
- package/dist/utils/shell/ShellBuilder.test.js.map +1 -0
- package/package.json +39 -11
- package/.github/dependabot.yml +0 -28
- package/.github/workflows/publish.yml +0 -31
- package/.husky/commit-msg +0 -1
- package/.vscode/settings.json +0 -6
- package/commitlint.config.mjs +0 -4
- package/src/index.js +0 -130
- package/src/modules/adbBridge.js +0 -52
- package/src/modules/adbIntentSender.js +0 -82
- package/src/modules/changelog.js +0 -60
- package/src/modules/csvMerger.js +0 -118
- package/src/modules/deleteDB.js +0 -84
- package/src/modules/dumpTableToCSV.js +0 -154
- package/src/modules/githubDeploymentKey.js +0 -265
- package/src/modules/githubDeploymentKeysList.js +0 -199
- package/src/modules/githubSecurityAdvisories.js +0 -162
- package/src/modules/graphqlSchemaExport.js +0 -61
- package/src/modules/rewriteConfig.js +0 -93
- package/src/modules/setCLIConfig.js +0 -33
- package/src/modules/t003Rewrite.js +0 -64
- package/src/modules/t009Search.js +0 -34
- package/src/utils/config/config.js +0 -70
- package/src/utils/db/DB.js +0 -54
- package/src/utils/github/github.js +0 -102
- /package/{src → dist}/ressources/wegas_p.ico +0 -0
- /package/{src → dist}/utils/config/default.json +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import prompts from "prompts";
|
|
2
|
+
import { rmSync } from "fs";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { DB } from "../utils/db/DB.js";
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import path from "path";
|
|
7
|
+
export default async function deleteDBMand(_cli) {
|
|
8
|
+
console.log();
|
|
9
|
+
const databaseNames = await DB.getDatabaseNames();
|
|
10
|
+
let success = true;
|
|
11
|
+
const results = await prompts([
|
|
12
|
+
{
|
|
13
|
+
// DB-Auswahl von DB
|
|
14
|
+
type: 'autocomplete',
|
|
15
|
+
name: 'dbName',
|
|
16
|
+
message: 'DB-Name?',
|
|
17
|
+
choices: databaseNames.map(name => { return { title: name.name }; })
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'number',
|
|
21
|
+
name: 'mnr',
|
|
22
|
+
message: 'Mandant?',
|
|
23
|
+
initial: '1'
|
|
24
|
+
}
|
|
25
|
+
], {
|
|
26
|
+
onCancel: () => {
|
|
27
|
+
console.log();
|
|
28
|
+
console.log(chalk.red("Cancelled Import!"));
|
|
29
|
+
console.log();
|
|
30
|
+
success = false;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
if (success) {
|
|
34
|
+
console.log();
|
|
35
|
+
const spinner = ora('Deleting in DB').start();
|
|
36
|
+
// Load table names
|
|
37
|
+
const tableRows = await DB.executeQueryOnDB("SHOW TABLES;", results.dbName);
|
|
38
|
+
const tableKey = tableRows.length > 0 ? Object.keys(tableRows[0])[0] : null;
|
|
39
|
+
const tables = tableKey ? tableRows.map((row) => row[tableKey]) : [];
|
|
40
|
+
if (tables.length == 0) {
|
|
41
|
+
spinner.fail("Database has no tables: " + results.dbName);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Remove previous dump
|
|
45
|
+
rmSync("." + path.sep + "delete-db.tmp", { recursive: true, force: true });
|
|
46
|
+
for (const table of tables) {
|
|
47
|
+
// Check if Mand-Column exists
|
|
48
|
+
const tableSpinner = ora("Deleting data: " + table).start();
|
|
49
|
+
const tableCol = table + "_mnr";
|
|
50
|
+
const columnExists = await DB.executeQueryOnDB("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = '" + results.dbName + "' AND table_name = '" + table + "' AND column_name = '" + tableCol + "';", results.dbName);
|
|
51
|
+
if (columnExists[0]['COUNT(*)'] != 0) {
|
|
52
|
+
// Check if Mand-Data is present
|
|
53
|
+
const dataExists = await DB.executeQueryOnDB("SELECT COUNT(*) FROM " + table + " WHERE " + tableCol + " = '" + results.mnr + "';", results.dbName);
|
|
54
|
+
if (dataExists[0]['COUNT(*)'] != 0) {
|
|
55
|
+
await DB.executeQueryOnDB("DELETE FROM " + table + " WHERE " + tableCol + " = '" + results.mnr + "';", results.dbName);
|
|
56
|
+
tableSpinner.succeed("Data deleted: " + table);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
tableSpinner.info("No data present, Skipping table: " + table);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
tableSpinner.info("Column " + tableCol + " not found, Skipping table: " + table);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Dump mand-table (special field name)
|
|
67
|
+
const tableSpinner = ora("Deleting mand (custom logic)");
|
|
68
|
+
await DB.executeQueryOnDB("DELETE FROM mand WHERE mand_mandant = '" + results.mnr + "';", results.dbName);
|
|
69
|
+
tableSpinner.succeed("Data deleted: mand");
|
|
70
|
+
spinner.succeed("Mand deleted: " + results.mnr);
|
|
71
|
+
}
|
|
72
|
+
console.log();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=deleteDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteDB.js","sourceRoot":"","sources":["../../src/modules/deleteDB.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CAAC,IAAa;IACpD,OAAO,CAAC,GAAG,EAAE,CAAA;IAEb,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAElD,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;QAC1B;YACI,oBAAoB;YACpB,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC;SACtE;QACD;YACI,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,GAAG;SACf;KACJ,EAAC;QACE,QAAQ,EAAE,GAAG,EAAE;YACX,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAA;YAC3C,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAO,GAAG,KAAK,CAAA;QACnB,CAAC;KACJ,CAAC,CAAA;IAEF,IAAG,OAAO,EAAC,CAAC;QACR,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;QAE9C,mBAAmB;QACnB,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAkC,CAAC;QAC7G,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAErE,IAAG,MAAM,CAAC,MAAM,IAAI,CAAC,EAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,0BAA0B,GAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC3D,CAAC;aAAI,CAAC;YACF,uBAAuB;YACvB,MAAM,CAAC,GAAG,GAAC,IAAI,CAAC,GAAG,GAAC,eAAe,EAAE,EAAC,SAAS,EAAC,IAAI,EAAE,KAAK,EAAC,IAAI,EAAC,CAAC,CAAA;YAClE,KAAI,MAAM,KAAK,IAAI,MAAM,EAAC,CAAC;gBACvB,8BAA8B;gBAC9B,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,GAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,KAAK,GAAC,MAAM,CAAA;gBAC7B,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,wEAAwE,GAAC,OAAO,CAAC,MAAM,GAAC,sBAAsB,GAAC,KAAK,GAAC,uBAAuB,GAAC,QAAQ,GAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAe,CAAA;gBAExO,IAAG,YAAY,CAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,CAAC;oBAClC,gCAAgC;oBAChC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,GAAC,KAAK,GAAC,SAAS,GAAC,QAAQ,GAAC,MAAM,GAAC,OAAO,CAAC,GAAG,GAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAe,CAAC;oBAErJ,IAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAC,CAAC;wBAC/B,MAAM,EAAE,CAAC,gBAAgB,CAAC,cAAc,GAAC,KAAK,GAAC,SAAS,GAAC,QAAQ,GAAC,MAAM,GAAC,OAAO,CAAC,GAAG,GAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;wBAC1G,YAAY,CAAC,OAAO,CAAC,gBAAgB,GAAC,KAAK,CAAC,CAAC;oBACjD,CAAC;yBAAI,CAAC;wBACF,YAAY,CAAC,IAAI,CAAC,mCAAmC,GAAC,KAAK,CAAC,CAAA;oBAChE,CAAC;gBACL,CAAC;qBAAI,CAAC;oBACF,YAAY,CAAC,IAAI,CAAC,SAAS,GAAC,QAAQ,GAAC,8BAA8B,GAAC,KAAK,CAAC,CAAA;gBAC9E,CAAC;YACL,CAAC;YACD,uCAAuC;YACvC,MAAM,YAAY,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAA;YACxD,MAAM,EAAE,CAAC,gBAAgB,CAAC,yCAAyC,GAAC,OAAO,CAAC,GAAG,GAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;YACrG,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;YAC1C,OAAO,CAAC,OAAO,CAAC,gBAAgB,GAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC;QAGD,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteDB.test.d.ts","sourceRoot":"","sources":["../../src/modules/deleteDB.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
const mocks = vi.hoisted(() => {
|
|
3
|
+
const rootSpinner = {
|
|
4
|
+
start: vi.fn(),
|
|
5
|
+
fail: vi.fn(),
|
|
6
|
+
succeed: vi.fn(),
|
|
7
|
+
info: vi.fn()
|
|
8
|
+
};
|
|
9
|
+
const tableSpinner = {
|
|
10
|
+
start: vi.fn(),
|
|
11
|
+
fail: vi.fn(),
|
|
12
|
+
succeed: vi.fn(),
|
|
13
|
+
info: vi.fn()
|
|
14
|
+
};
|
|
15
|
+
rootSpinner.start.mockReturnValue(rootSpinner);
|
|
16
|
+
tableSpinner.start.mockReturnValue(tableSpinner);
|
|
17
|
+
return {
|
|
18
|
+
prompts: vi.fn(),
|
|
19
|
+
rmSync: vi.fn(),
|
|
20
|
+
getDatabaseNames: vi.fn(),
|
|
21
|
+
executeQueryOnDB: vi.fn(),
|
|
22
|
+
ora: vi.fn((text) => (text.includes("Deleting in DB") ? rootSpinner : tableSpinner)),
|
|
23
|
+
rootSpinner,
|
|
24
|
+
tableSpinner
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
vi.mock("prompts", () => ({ default: mocks.prompts }));
|
|
28
|
+
vi.mock("fs", () => ({ rmSync: mocks.rmSync }));
|
|
29
|
+
vi.mock("ora", () => ({ default: mocks.ora }));
|
|
30
|
+
vi.mock("../utils/db/DB.js", () => ({
|
|
31
|
+
DB: {
|
|
32
|
+
getDatabaseNames: mocks.getDatabaseNames,
|
|
33
|
+
executeQueryOnDB: mocks.executeQueryOnDB
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
import deleteDBMand from "./deleteDB.js";
|
|
37
|
+
describe("deleteDBMand", () => {
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
vi.clearAllMocks();
|
|
40
|
+
mocks.rootSpinner.start.mockReturnValue(mocks.rootSpinner);
|
|
41
|
+
mocks.tableSpinner.start.mockReturnValue(mocks.tableSpinner);
|
|
42
|
+
mocks.getDatabaseNames.mockResolvedValue([{ name: "clientdb" }]);
|
|
43
|
+
});
|
|
44
|
+
it("aborts when prompt is cancelled", async () => {
|
|
45
|
+
mocks.prompts.mockImplementation(async (_questions, options) => {
|
|
46
|
+
options?.onCancel?.();
|
|
47
|
+
return {};
|
|
48
|
+
});
|
|
49
|
+
await deleteDBMand({});
|
|
50
|
+
expect(mocks.executeQueryOnDB).not.toHaveBeenCalled();
|
|
51
|
+
expect(mocks.rmSync).not.toHaveBeenCalled();
|
|
52
|
+
});
|
|
53
|
+
it("fails spinner when no tables exist", async () => {
|
|
54
|
+
mocks.prompts.mockResolvedValue({ dbName: "clientdb", mnr: 1 });
|
|
55
|
+
mocks.executeQueryOnDB.mockResolvedValueOnce([]);
|
|
56
|
+
await deleteDBMand({});
|
|
57
|
+
expect(mocks.executeQueryOnDB).toHaveBeenCalledWith("SHOW TABLES;", "clientdb");
|
|
58
|
+
expect(mocks.rootSpinner.fail).toHaveBeenCalledWith("Database has no tables: clientdb");
|
|
59
|
+
});
|
|
60
|
+
it("deletes data for matching mandant and skips others", async () => {
|
|
61
|
+
mocks.prompts.mockResolvedValue({ dbName: "clientdb", mnr: 1 });
|
|
62
|
+
mocks.executeQueryOnDB
|
|
63
|
+
.mockResolvedValueOnce([{ "Tables_in_clientdb": "t1" }, { "Tables_in_clientdb": "t2" }])
|
|
64
|
+
.mockResolvedValueOnce([{ "COUNT(*)": 1 }])
|
|
65
|
+
.mockResolvedValueOnce([{ "COUNT(*)": 1 }])
|
|
66
|
+
.mockResolvedValueOnce([])
|
|
67
|
+
.mockResolvedValueOnce([{ "COUNT(*)": 0 }])
|
|
68
|
+
.mockResolvedValueOnce([]);
|
|
69
|
+
await deleteDBMand({});
|
|
70
|
+
expect(mocks.rmSync).toHaveBeenCalled();
|
|
71
|
+
expect(mocks.executeQueryOnDB).toHaveBeenCalledWith("DELETE FROM t1 WHERE t1_mnr = '1';", "clientdb");
|
|
72
|
+
expect(mocks.executeQueryOnDB).toHaveBeenCalledWith("DELETE FROM mand WHERE mand_mandant = '1';", "clientdb");
|
|
73
|
+
expect(mocks.tableSpinner.succeed).toHaveBeenCalledWith("Data deleted: t1");
|
|
74
|
+
expect(mocks.tableSpinner.info).toHaveBeenCalledWith("Column t2_mnr not found, Skipping table: t2");
|
|
75
|
+
expect(mocks.rootSpinner.succeed).toHaveBeenCalledWith("Mand deleted: 1");
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=deleteDB.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteDB.test.js","sourceRoot":"","sources":["../../src/modules/deleteDB.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpDB.d.ts","sourceRoot":"","sources":["../../src/modules/dumpDB.ts"],"names":[],"mappings":"AAcA,wBAAsB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHzD;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsF7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import prompts from "prompts"
|
|
1
|
+
import prompts from "prompts";
|
|
2
2
|
import { rmSync } from "fs";
|
|
3
3
|
import ora from "ora";
|
|
4
4
|
import { DB } from "../utils/db/DB.js";
|
|
@@ -6,24 +6,18 @@ import { Config } from "../utils/config/config.js";
|
|
|
6
6
|
import chalk from "chalk";
|
|
7
7
|
import path from "path";
|
|
8
8
|
import { exec, execSync } from "child_process";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export async function dumpDB(cli) {
|
|
12
|
-
console.log()
|
|
13
|
-
|
|
9
|
+
export async function dumpDB(_cli) {
|
|
10
|
+
console.log();
|
|
14
11
|
const config = await Config.getConfig();
|
|
15
|
-
|
|
16
12
|
const databaseNames = await DB.getDatabaseNames();
|
|
17
|
-
|
|
18
13
|
let success = true;
|
|
19
|
-
|
|
20
14
|
const resultsDB = await prompts([
|
|
21
15
|
{
|
|
22
16
|
// DB-Auswahl von DB
|
|
23
17
|
type: 'autocomplete',
|
|
24
18
|
name: 'dbName',
|
|
25
19
|
message: 'DB-Name?',
|
|
26
|
-
choices: databaseNames.map(name => { return { title: name.name } })
|
|
20
|
+
choices: databaseNames.map(name => { return { title: name.name }; })
|
|
27
21
|
},
|
|
28
22
|
{
|
|
29
23
|
type: 'toggle',
|
|
@@ -32,30 +26,29 @@ export async function dumpDB(cli) {
|
|
|
32
26
|
initial: false,
|
|
33
27
|
active: 'yes',
|
|
34
28
|
inactive: 'no'
|
|
35
|
-
}
|
|
36
|
-
|
|
29
|
+
},
|
|
30
|
+
{
|
|
37
31
|
type: 'toggle',
|
|
38
32
|
name: 'selectIndividualTables',
|
|
39
33
|
message: 'Select individual tables?',
|
|
40
34
|
initial: false,
|
|
41
35
|
active: 'yes',
|
|
42
36
|
inactive: 'no'
|
|
43
|
-
}
|
|
37
|
+
}
|
|
38
|
+
], {
|
|
44
39
|
onCancel: () => {
|
|
45
|
-
console.log()
|
|
46
|
-
console.log(chalk.red("Cancelled Import!"))
|
|
47
|
-
console.log()
|
|
48
|
-
success = false
|
|
40
|
+
console.log();
|
|
41
|
+
console.log(chalk.red("Cancelled Import!"));
|
|
42
|
+
console.log();
|
|
43
|
+
success = false;
|
|
49
44
|
}
|
|
50
|
-
})
|
|
51
|
-
|
|
45
|
+
});
|
|
52
46
|
if (success) {
|
|
53
47
|
let selectedTables = [];
|
|
54
48
|
if (resultsDB.selectIndividualTables) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
tables = tables.map(row => row[tableKey])
|
|
49
|
+
const tableRows = await DB.executeQueryOnDB("SHOW TABLES;", resultsDB.dbName);
|
|
50
|
+
const tableKey = tableRows.length > 0 ? Object.keys(tableRows[0])[0] : null;
|
|
51
|
+
const tables = tableKey ? tableRows.map((row) => row[tableKey]) : [];
|
|
59
52
|
let continuePrompt = true;
|
|
60
53
|
while (continuePrompt) {
|
|
61
54
|
const resultsTable = await prompts([
|
|
@@ -64,8 +57,8 @@ export async function dumpDB(cli) {
|
|
|
64
57
|
type: 'autocomplete',
|
|
65
58
|
name: 'table',
|
|
66
59
|
message: 'Table?',
|
|
67
|
-
choices: tables.map(name => { return { title: name } }),
|
|
68
|
-
|
|
60
|
+
choices: tables.map(name => { return { title: name }; }),
|
|
61
|
+
initial: ""
|
|
69
62
|
}, {
|
|
70
63
|
type: 'toggle',
|
|
71
64
|
name: 'continue',
|
|
@@ -73,21 +66,19 @@ export async function dumpDB(cli) {
|
|
|
73
66
|
initial: false,
|
|
74
67
|
active: 'yes',
|
|
75
68
|
inactive: 'no'
|
|
76
|
-
}
|
|
69
|
+
}
|
|
70
|
+
], {
|
|
77
71
|
onCancel: () => {
|
|
78
|
-
console.log()
|
|
79
|
-
console.log(chalk.red("Cancelled Import!"))
|
|
80
|
-
console.log()
|
|
81
|
-
success = false
|
|
72
|
+
console.log();
|
|
73
|
+
console.log(chalk.red("Cancelled Import!"));
|
|
74
|
+
console.log();
|
|
75
|
+
success = false;
|
|
82
76
|
}
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
continuePrompt = resultsTable.continue
|
|
77
|
+
});
|
|
78
|
+
selectedTables.push(resultsTable.table);
|
|
79
|
+
continuePrompt = resultsTable.continue;
|
|
87
80
|
}
|
|
88
|
-
|
|
89
81
|
}
|
|
90
|
-
|
|
91
82
|
const results = await prompts([
|
|
92
83
|
{
|
|
93
84
|
// Ordnerauswahl von vorhandenen Ordner in configIndividual
|
|
@@ -98,51 +89,40 @@ export async function dumpDB(cli) {
|
|
|
98
89
|
}
|
|
99
90
|
], {
|
|
100
91
|
onCancel: () => {
|
|
101
|
-
console.log()
|
|
102
|
-
console.log(chalk.red("Cancelled Import!"))
|
|
103
|
-
console.log()
|
|
104
|
-
success = false
|
|
92
|
+
console.log();
|
|
93
|
+
console.log(chalk.red("Cancelled Import!"));
|
|
94
|
+
console.log();
|
|
95
|
+
success = false;
|
|
105
96
|
}
|
|
106
|
-
})
|
|
107
|
-
|
|
97
|
+
});
|
|
108
98
|
if (success) {
|
|
109
|
-
console.log()
|
|
99
|
+
console.log();
|
|
110
100
|
const spinner = ora('Dumping DB').start();
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
exec(dumpCommand, (error, stdout, stderr) => {
|
|
101
|
+
const dumpCommand = `mysqldump ${resultsDB.dataOnly ? '--no-create-info' : ''} -u${config.dbUser} -p${config.dbPassword} -h${config.dbURL} ${resultsDB.dbName} ${selectedTables.join(" ")} > ${results.dumpName}`;
|
|
102
|
+
exec(dumpCommand, (error) => {
|
|
115
103
|
if (error) {
|
|
116
104
|
spinner.fail('Failed to dump DB');
|
|
117
105
|
console.error(error);
|
|
118
106
|
return;
|
|
119
107
|
}
|
|
120
|
-
|
|
121
108
|
spinner.succeed("Dumped DB to " + results.dumpName);
|
|
122
109
|
console.log();
|
|
123
110
|
});
|
|
124
111
|
}
|
|
125
112
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
113
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
console.log()
|
|
132
|
-
|
|
114
|
+
export async function dumpDBMand(_cli) {
|
|
115
|
+
console.log();
|
|
133
116
|
const config = await Config.getConfig();
|
|
134
|
-
|
|
135
117
|
const databaseNames = await DB.getDatabaseNames();
|
|
136
|
-
|
|
137
118
|
let success = true;
|
|
138
|
-
|
|
139
119
|
const results = await prompts([
|
|
140
120
|
{
|
|
141
121
|
// DB-Auswahl von DB
|
|
142
122
|
type: 'autocomplete',
|
|
143
123
|
name: 'dbName',
|
|
144
124
|
message: 'DB-Name?',
|
|
145
|
-
choices: databaseNames.map(name => { return { title: name.name } })
|
|
125
|
+
choices: databaseNames.map(name => { return { title: name.name }; })
|
|
146
126
|
},
|
|
147
127
|
{
|
|
148
128
|
type: 'number',
|
|
@@ -159,58 +139,53 @@ export async function dumpDBMand(cli) {
|
|
|
159
139
|
}
|
|
160
140
|
], {
|
|
161
141
|
onCancel: () => {
|
|
162
|
-
console.log()
|
|
163
|
-
console.log(chalk.red("Cancelled Import!"))
|
|
164
|
-
console.log()
|
|
165
|
-
success = false
|
|
142
|
+
console.log();
|
|
143
|
+
console.log(chalk.red("Cancelled Import!"));
|
|
144
|
+
console.log();
|
|
145
|
+
success = false;
|
|
166
146
|
}
|
|
167
|
-
})
|
|
168
|
-
|
|
147
|
+
});
|
|
169
148
|
if (success) {
|
|
170
|
-
console.log()
|
|
171
|
-
|
|
149
|
+
console.log();
|
|
172
150
|
const spinner = ora('Dumping DB').start();
|
|
173
|
-
|
|
174
151
|
// Load table names
|
|
175
|
-
|
|
176
|
-
const tableKey = Object.keys(
|
|
177
|
-
tables =
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
152
|
+
const tableRows = await DB.executeQueryOnDB("SHOW TABLES;", results.dbName);
|
|
153
|
+
const tableKey = tableRows.length > 0 ? Object.keys(tableRows[0])[0] : null;
|
|
154
|
+
const tables = tableKey ? tableRows.map((row) => row[tableKey]) : [];
|
|
155
|
+
if (tables.length == 0) {
|
|
156
|
+
spinner.fail("Database has no tables: " + results.dbName);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
182
159
|
// Remove previous dump
|
|
183
|
-
rmSync("." + path.sep + results.dumpName, { recursive: true, force: true })
|
|
160
|
+
rmSync("." + path.sep + results.dumpName, { recursive: true, force: true });
|
|
184
161
|
for (const table of tables) {
|
|
185
162
|
// Check if Mand-Column exists
|
|
186
163
|
const tableSpinner = ora("Dumping data: " + table).start();
|
|
187
|
-
const tableCol = table + "_mnr"
|
|
188
|
-
const columnExists = await DB.executeQueryOnDB("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = '" + results.dbName + "' AND table_name = '" + table + "' AND column_name = '" + tableCol + "';")
|
|
189
|
-
|
|
164
|
+
const tableCol = table + "_mnr";
|
|
165
|
+
const columnExists = await DB.executeQueryOnDB("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = '" + results.dbName + "' AND table_name = '" + table + "' AND column_name = '" + tableCol + "';", results.dbName);
|
|
190
166
|
if (columnExists[0]['COUNT(*)'] != 0) {
|
|
191
167
|
// Check if Mand-Data is present
|
|
192
168
|
const dataExists = await DB.executeQueryOnDB("SELECT COUNT(*) FROM " + table + " WHERE " + tableCol + " = '" + results.mnr + "';", results.dbName);
|
|
193
|
-
|
|
194
169
|
if (dataExists[0]['COUNT(*)'] != 0) {
|
|
195
170
|
// Dump table
|
|
196
171
|
execSync("mysqldump -u" + config.dbUser + " -p" + config.dbPassword + " -h" + config.dbURL + " --no-create-info --where=\"" + tableCol + " = '" + results.mnr + "'\" " + results.dbName + " " + table + " >> " + results.dumpName);
|
|
197
|
-
|
|
198
172
|
tableSpinner.succeed("Data dumped: " + table);
|
|
199
|
-
} else {
|
|
200
|
-
tableSpinner.info("No data present, Skipping table: " + table)
|
|
201
173
|
}
|
|
202
|
-
|
|
203
|
-
|
|
174
|
+
else {
|
|
175
|
+
tableSpinner.info("No data present, Skipping table: " + table);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
tableSpinner.info("Column " + tableCol + " not found, Skipping table: " + table);
|
|
204
180
|
}
|
|
205
181
|
}
|
|
206
182
|
// Dump mand-table (special field name)
|
|
207
|
-
const tableSpinner = ora("Dumping mand (custom logic)")
|
|
183
|
+
const tableSpinner = ora("Dumping mand (custom logic)");
|
|
208
184
|
execSync("mysqldump -u" + config.dbUser + " -p" + config.dbPassword + " -h" + config.dbURL + " --no-create-info --where=\"mand_mandant = '" + results.mnr + "'\" " + results.dbName + " mand >> " + results.dumpName);
|
|
209
|
-
tableSpinner.succeed("Data dumped: mand")
|
|
185
|
+
tableSpinner.succeed("Data dumped: mand");
|
|
210
186
|
spinner.succeed("Dumped DB to " + results.dumpName);
|
|
211
187
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
188
|
console.log();
|
|
215
189
|
}
|
|
216
|
-
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=dumpDB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpDB.js","sourceRoot":"","sources":["../../src/modules/dumpDB.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpDB.test.d.ts","sourceRoot":"","sources":["../../src/modules/dumpDB.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { dumpDB, dumpDBMand } from "./dumpDB.js";
|
|
3
|
+
const mocks = vi.hoisted(() => {
|
|
4
|
+
const spinner = {
|
|
5
|
+
start: vi.fn(),
|
|
6
|
+
fail: vi.fn(),
|
|
7
|
+
succeed: vi.fn(),
|
|
8
|
+
info: vi.fn(),
|
|
9
|
+
warn: vi.fn()
|
|
10
|
+
};
|
|
11
|
+
spinner.start.mockReturnValue(spinner);
|
|
12
|
+
return {
|
|
13
|
+
prompts: vi.fn(),
|
|
14
|
+
rmSync: vi.fn(),
|
|
15
|
+
ora: vi.fn(() => spinner),
|
|
16
|
+
getConfig: vi.fn(),
|
|
17
|
+
getDatabaseNames: vi.fn(),
|
|
18
|
+
executeQueryOnDB: vi.fn(),
|
|
19
|
+
exec: vi.fn(),
|
|
20
|
+
execSync: vi.fn(),
|
|
21
|
+
spinner
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
vi.mock("prompts", () => ({ default: mocks.prompts }));
|
|
25
|
+
vi.mock("fs", () => ({ rmSync: mocks.rmSync }));
|
|
26
|
+
vi.mock("ora", () => ({ default: mocks.ora }));
|
|
27
|
+
vi.mock("../utils/config/config.js", () => ({ Config: { getConfig: mocks.getConfig } }));
|
|
28
|
+
vi.mock("../utils/db/DB.js", () => ({
|
|
29
|
+
DB: {
|
|
30
|
+
getDatabaseNames: mocks.getDatabaseNames,
|
|
31
|
+
executeQueryOnDB: mocks.executeQueryOnDB
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
vi.mock("child_process", () => ({ exec: mocks.exec, execSync: mocks.execSync }));
|
|
35
|
+
describe("dumpDB", () => {
|
|
36
|
+
beforeEach(() => {
|
|
37
|
+
vi.clearAllMocks();
|
|
38
|
+
mocks.spinner.start.mockReturnValue(mocks.spinner);
|
|
39
|
+
mocks.getConfig.mockResolvedValue({ dbUser: "root", dbPassword: "pw", dbURL: "127.0.0.1" });
|
|
40
|
+
mocks.getDatabaseNames.mockResolvedValue([{ name: "clientdb" }]);
|
|
41
|
+
});
|
|
42
|
+
it("executes mysqldump command", async () => {
|
|
43
|
+
mocks.prompts
|
|
44
|
+
.mockResolvedValueOnce({ dbName: "clientdb", dataOnly: true, selectIndividualTables: false })
|
|
45
|
+
.mockResolvedValueOnce({ dumpName: "dump.sql" });
|
|
46
|
+
mocks.exec.mockImplementation((cmd, cb) => cb(null));
|
|
47
|
+
await dumpDB({});
|
|
48
|
+
expect(mocks.exec).toHaveBeenCalledTimes(1);
|
|
49
|
+
const command = String(mocks.exec.mock.calls[0]?.[0] ?? "");
|
|
50
|
+
expect(command).toContain("mysqldump");
|
|
51
|
+
expect(command).toContain("--no-create-info");
|
|
52
|
+
expect(command).toContain("clientdb");
|
|
53
|
+
expect(command).toContain("> dump.sql");
|
|
54
|
+
});
|
|
55
|
+
it("dumps selected tables when requested", async () => {
|
|
56
|
+
mocks.prompts
|
|
57
|
+
.mockResolvedValueOnce({ dbName: "clientdb", dataOnly: false, selectIndividualTables: true })
|
|
58
|
+
.mockResolvedValueOnce({ table: "t1", continue: true })
|
|
59
|
+
.mockResolvedValueOnce({ table: "t2", continue: false })
|
|
60
|
+
.mockResolvedValueOnce({ dumpName: "dump.sql" });
|
|
61
|
+
mocks.executeQueryOnDB.mockResolvedValueOnce([{ "Tables_in_clientdb": "t1" }, { "Tables_in_clientdb": "t2" }]);
|
|
62
|
+
mocks.exec.mockImplementation((cmd, cb) => cb(null));
|
|
63
|
+
await dumpDB({});
|
|
64
|
+
const command = String(mocks.exec.mock.calls[0]?.[0] ?? "");
|
|
65
|
+
expect(command).toContain(" clientdb t1 t2 > dump.sql");
|
|
66
|
+
});
|
|
67
|
+
it("aborts when initial prompt is cancelled", async () => {
|
|
68
|
+
mocks.prompts.mockImplementationOnce(async (_q, options) => {
|
|
69
|
+
options?.onCancel?.();
|
|
70
|
+
return {};
|
|
71
|
+
});
|
|
72
|
+
await dumpDB({});
|
|
73
|
+
expect(mocks.exec).not.toHaveBeenCalled();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe("dumpDBMand", () => {
|
|
77
|
+
beforeEach(() => {
|
|
78
|
+
vi.clearAllMocks();
|
|
79
|
+
mocks.spinner.start.mockReturnValue(mocks.spinner);
|
|
80
|
+
mocks.getConfig.mockResolvedValue({ dbUser: "root", dbPassword: "pw", dbURL: "127.0.0.1" });
|
|
81
|
+
mocks.getDatabaseNames.mockResolvedValue([{ name: "clientdb" }]);
|
|
82
|
+
});
|
|
83
|
+
it("fails when db has no tables", async () => {
|
|
84
|
+
mocks.prompts.mockResolvedValue({ dbName: "clientdb", mnr: 1, dumpName: "dump.sql" });
|
|
85
|
+
mocks.executeQueryOnDB.mockResolvedValueOnce([]);
|
|
86
|
+
await dumpDBMand({});
|
|
87
|
+
expect(mocks.spinner.fail).toHaveBeenCalledWith("Database has no tables: clientdb");
|
|
88
|
+
});
|
|
89
|
+
it("dumps matching tables and mand", async () => {
|
|
90
|
+
mocks.prompts.mockResolvedValue({ dbName: "clientdb", mnr: 1, dumpName: "dump.sql" });
|
|
91
|
+
mocks.executeQueryOnDB
|
|
92
|
+
.mockResolvedValueOnce([{ "Tables_in_clientdb": "t1" }, { "Tables_in_clientdb": "t2" }])
|
|
93
|
+
.mockResolvedValueOnce([{ "COUNT(*)": 1 }])
|
|
94
|
+
.mockResolvedValueOnce([{ "COUNT(*)": 1 }])
|
|
95
|
+
.mockResolvedValueOnce([{ "COUNT(*)": 0 }]);
|
|
96
|
+
await dumpDBMand({});
|
|
97
|
+
expect(mocks.rmSync).toHaveBeenCalled();
|
|
98
|
+
expect(mocks.execSync).toHaveBeenCalledTimes(2);
|
|
99
|
+
expect(String(mocks.execSync.mock.calls[0]?.[0] ?? "")).toContain("--where=\"t1_mnr = '1'\"");
|
|
100
|
+
expect(String(mocks.execSync.mock.calls[1]?.[0] ?? "")).toContain("--where=\"mand_mandant = '1'\"");
|
|
101
|
+
expect(mocks.spinner.succeed).toHaveBeenCalledWith("Dumped DB to dump.sql");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=dumpDB.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpDB.test.js","sourceRoot":"","sources":["../../src/modules/dumpDB.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export default function dumpTableToCSV(): Promise<void>;
|
|
2
|
+
export declare function parseHeadersFromCreateStatement(headerData: string, table: string): string[];
|
|
3
|
+
export declare function parseInsertRecords(data: string): string[];
|
|
4
|
+
//# sourceMappingURL=dumpTableToCSV.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dumpTableToCSV.d.ts","sourceRoot":"","sources":["../../src/modules/dumpTableToCSV.ts"],"names":[],"mappings":"AASA,wBAA8B,cAAc,kBA8C3C;AA2FD,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAY3F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAUzD"}
|