@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.
Files changed (272) hide show
  1. package/README.md +13 -1
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +158 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/modules/adbBridge.d.ts +2 -0
  7. package/dist/modules/adbBridge.d.ts.map +1 -0
  8. package/dist/modules/adbBridge.js +40 -0
  9. package/dist/modules/adbBridge.js.map +1 -0
  10. package/dist/modules/adbBridge.test.d.ts +2 -0
  11. package/dist/modules/adbBridge.test.d.ts.map +1 -0
  12. package/dist/modules/adbBridge.test.js +39 -0
  13. package/dist/modules/adbBridge.test.js.map +1 -0
  14. package/dist/modules/adbIntentSender.d.ts +2 -0
  15. package/dist/modules/adbIntentSender.d.ts.map +1 -0
  16. package/dist/modules/adbIntentSender.js +67 -0
  17. package/dist/modules/adbIntentSender.js.map +1 -0
  18. package/dist/modules/adbIntentSender.test.d.ts +2 -0
  19. package/dist/modules/adbIntentSender.test.d.ts.map +1 -0
  20. package/dist/modules/adbIntentSender.test.js +48 -0
  21. package/dist/modules/adbIntentSender.test.js.map +1 -0
  22. package/dist/modules/azureSync.d.ts +16 -0
  23. package/dist/modules/azureSync.d.ts.map +1 -0
  24. package/{src → dist}/modules/azureSync.js +55 -136
  25. package/dist/modules/azureSync.js.map +1 -0
  26. package/dist/modules/azureSync.test.d.ts +2 -0
  27. package/dist/modules/azureSync.test.d.ts.map +1 -0
  28. package/dist/modules/azureSync.test.js +69 -0
  29. package/dist/modules/azureSync.test.js.map +1 -0
  30. package/dist/modules/bundleProduct.d.ts +2 -0
  31. package/dist/modules/bundleProduct.d.ts.map +1 -0
  32. package/{src → dist}/modules/bundleProduct.js +41 -80
  33. package/dist/modules/bundleProduct.js.map +1 -0
  34. package/dist/modules/bundleProduct.test.d.ts +2 -0
  35. package/dist/modules/bundleProduct.test.d.ts.map +1 -0
  36. package/dist/modules/bundleProduct.test.js +75 -0
  37. package/dist/modules/bundleProduct.test.js.map +1 -0
  38. package/dist/modules/changelog.d.ts +3 -0
  39. package/dist/modules/changelog.d.ts.map +1 -0
  40. package/dist/modules/changelog.js +45 -0
  41. package/dist/modules/changelog.js.map +1 -0
  42. package/dist/modules/changelog.test.d.ts +2 -0
  43. package/dist/modules/changelog.test.d.ts.map +1 -0
  44. package/dist/modules/changelog.test.js +33 -0
  45. package/dist/modules/changelog.test.js.map +1 -0
  46. package/dist/modules/configMutation.d.ts +5 -0
  47. package/dist/modules/configMutation.d.ts.map +1 -0
  48. package/{src → dist}/modules/configMutation.js +57 -104
  49. package/dist/modules/configMutation.js.map +1 -0
  50. package/dist/modules/configMutation.test.d.ts +2 -0
  51. package/dist/modules/configMutation.test.d.ts.map +1 -0
  52. package/dist/modules/configMutation.test.js +28 -0
  53. package/dist/modules/configMutation.test.js.map +1 -0
  54. package/dist/modules/csvMerger.d.ts +2 -0
  55. package/dist/modules/csvMerger.d.ts.map +1 -0
  56. package/dist/modules/csvMerger.js +104 -0
  57. package/dist/modules/csvMerger.js.map +1 -0
  58. package/dist/modules/csvMerger.test.d.ts +2 -0
  59. package/dist/modules/csvMerger.test.d.ts.map +1 -0
  60. package/dist/modules/csvMerger.test.js +76 -0
  61. package/dist/modules/csvMerger.test.js.map +1 -0
  62. package/dist/modules/deleteDB.d.ts +2 -0
  63. package/dist/modules/deleteDB.d.ts.map +1 -0
  64. package/dist/modules/deleteDB.js +75 -0
  65. package/dist/modules/deleteDB.js.map +1 -0
  66. package/dist/modules/deleteDB.test.d.ts +2 -0
  67. package/dist/modules/deleteDB.test.d.ts.map +1 -0
  68. package/dist/modules/deleteDB.test.js +78 -0
  69. package/dist/modules/deleteDB.test.js.map +1 -0
  70. package/dist/modules/dumpDB.d.ts +3 -0
  71. package/dist/modules/dumpDB.d.ts.map +1 -0
  72. package/{src → dist}/modules/dumpDB.js +64 -89
  73. package/dist/modules/dumpDB.js.map +1 -0
  74. package/dist/modules/dumpDB.test.d.ts +2 -0
  75. package/dist/modules/dumpDB.test.d.ts.map +1 -0
  76. package/dist/modules/dumpDB.test.js +104 -0
  77. package/dist/modules/dumpDB.test.js.map +1 -0
  78. package/dist/modules/dumpTableToCSV.d.ts +4 -0
  79. package/dist/modules/dumpTableToCSV.d.ts.map +1 -0
  80. package/dist/modules/dumpTableToCSV.js +135 -0
  81. package/dist/modules/dumpTableToCSV.js.map +1 -0
  82. package/dist/modules/dumpTableToCSV.test.d.ts +2 -0
  83. package/dist/modules/dumpTableToCSV.test.d.ts.map +1 -0
  84. package/dist/modules/dumpTableToCSV.test.js +15 -0
  85. package/dist/modules/dumpTableToCSV.test.js.map +1 -0
  86. package/dist/modules/extdSearch.d.ts +2 -0
  87. package/dist/modules/extdSearch.d.ts.map +1 -0
  88. package/{src → dist}/modules/extdSearch.js +60 -60
  89. package/dist/modules/extdSearch.js.map +1 -0
  90. package/dist/modules/extdSearch.test.d.ts +2 -0
  91. package/dist/modules/extdSearch.test.d.ts.map +1 -0
  92. package/dist/modules/extdSearch.test.js +114 -0
  93. package/dist/modules/extdSearch.test.js.map +1 -0
  94. package/dist/modules/githubDeploymentKey.d.ts +3 -0
  95. package/dist/modules/githubDeploymentKey.d.ts.map +1 -0
  96. package/dist/modules/githubDeploymentKey.js +241 -0
  97. package/dist/modules/githubDeploymentKey.js.map +1 -0
  98. package/dist/modules/githubDeploymentKey.test.d.ts +2 -0
  99. package/dist/modules/githubDeploymentKey.test.d.ts.map +1 -0
  100. package/dist/modules/githubDeploymentKey.test.js +50 -0
  101. package/dist/modules/githubDeploymentKey.test.js.map +1 -0
  102. package/dist/modules/githubDeploymentKeysList.d.ts +6 -0
  103. package/dist/modules/githubDeploymentKeysList.d.ts.map +1 -0
  104. package/dist/modules/githubDeploymentKeysList.js +185 -0
  105. package/dist/modules/githubDeploymentKeysList.js.map +1 -0
  106. package/dist/modules/githubDeploymentKeysList.test.d.ts +2 -0
  107. package/dist/modules/githubDeploymentKeysList.test.d.ts.map +1 -0
  108. package/dist/modules/githubDeploymentKeysList.test.js +70 -0
  109. package/dist/modules/githubDeploymentKeysList.test.js.map +1 -0
  110. package/dist/modules/githubSecurityAdvisories.d.ts +3 -0
  111. package/dist/modules/githubSecurityAdvisories.d.ts.map +1 -0
  112. package/dist/modules/githubSecurityAdvisories.js +145 -0
  113. package/dist/modules/githubSecurityAdvisories.js.map +1 -0
  114. package/dist/modules/githubSecurityAdvisories.test.d.ts +2 -0
  115. package/dist/modules/githubSecurityAdvisories.test.d.ts.map +1 -0
  116. package/dist/modules/githubSecurityAdvisories.test.js +67 -0
  117. package/dist/modules/githubSecurityAdvisories.test.js.map +1 -0
  118. package/dist/modules/graphqlSchemaExport.d.ts +2 -0
  119. package/dist/modules/graphqlSchemaExport.d.ts.map +1 -0
  120. package/dist/modules/graphqlSchemaExport.js +59 -0
  121. package/dist/modules/graphqlSchemaExport.js.map +1 -0
  122. package/dist/modules/graphqlSchemaExport.test.d.ts +2 -0
  123. package/dist/modules/graphqlSchemaExport.test.d.ts.map +1 -0
  124. package/dist/modules/graphqlSchemaExport.test.js +61 -0
  125. package/dist/modules/graphqlSchemaExport.test.js.map +1 -0
  126. package/dist/modules/importDB.d.ts +2 -0
  127. package/dist/modules/importDB.d.ts.map +1 -0
  128. package/{src → dist}/modules/importDB.js +48 -66
  129. package/dist/modules/importDB.js.map +1 -0
  130. package/dist/modules/importDB.test.d.ts +2 -0
  131. package/dist/modules/importDB.test.d.ts.map +1 -0
  132. package/dist/modules/importDB.test.js +65 -0
  133. package/dist/modules/importDB.test.js.map +1 -0
  134. package/dist/modules/rewriteConfig.d.ts +3 -0
  135. package/dist/modules/rewriteConfig.d.ts.map +1 -0
  136. package/dist/modules/rewriteConfig.js +75 -0
  137. package/dist/modules/rewriteConfig.js.map +1 -0
  138. package/dist/modules/rewriteConfig.test.d.ts +2 -0
  139. package/dist/modules/rewriteConfig.test.d.ts.map +1 -0
  140. package/dist/modules/rewriteConfig.test.js +62 -0
  141. package/dist/modules/rewriteConfig.test.js.map +1 -0
  142. package/dist/modules/setCLIConfig.d.ts +2 -0
  143. package/dist/modules/setCLIConfig.d.ts.map +1 -0
  144. package/dist/modules/setCLIConfig.js +29 -0
  145. package/dist/modules/setCLIConfig.js.map +1 -0
  146. package/dist/modules/setCLIConfig.test.d.ts +2 -0
  147. package/dist/modules/setCLIConfig.test.d.ts.map +1 -0
  148. package/dist/modules/setCLIConfig.test.js +40 -0
  149. package/dist/modules/setCLIConfig.test.js.map +1 -0
  150. package/dist/modules/syncConfig.d.ts +4 -0
  151. package/dist/modules/syncConfig.d.ts.map +1 -0
  152. package/{src → dist}/modules/syncConfig.js +76 -129
  153. package/dist/modules/syncConfig.js.map +1 -0
  154. package/dist/modules/syncConfig.test.d.ts +2 -0
  155. package/dist/modules/syncConfig.test.d.ts.map +1 -0
  156. package/dist/modules/syncConfig.test.js +71 -0
  157. package/dist/modules/syncConfig.test.js.map +1 -0
  158. package/dist/modules/t003Rewrite.d.ts +2 -0
  159. package/dist/modules/t003Rewrite.d.ts.map +1 -0
  160. package/dist/modules/t003Rewrite.js +53 -0
  161. package/dist/modules/t003Rewrite.js.map +1 -0
  162. package/dist/modules/t003Rewrite.test.d.ts +2 -0
  163. package/dist/modules/t003Rewrite.test.d.ts.map +1 -0
  164. package/dist/modules/t003Rewrite.test.js +43 -0
  165. package/dist/modules/t003Rewrite.test.js.map +1 -0
  166. package/dist/modules/t009Search.d.ts +2 -0
  167. package/dist/modules/t009Search.d.ts.map +1 -0
  168. package/dist/modules/t009Search.js +30 -0
  169. package/dist/modules/t009Search.js.map +1 -0
  170. package/dist/modules/t009Search.test.d.ts +2 -0
  171. package/dist/modules/t009Search.test.d.ts.map +1 -0
  172. package/dist/modules/t009Search.test.js +83 -0
  173. package/dist/modules/t009Search.test.js.map +1 -0
  174. package/{src → dist}/ressources/cmds.json +3 -0
  175. package/dist/utils/azure/azure.d.ts +24 -0
  176. package/dist/utils/azure/azure.d.ts.map +1 -0
  177. package/{src → dist}/utils/azure/azure.js +14 -21
  178. package/dist/utils/azure/azure.js.map +1 -0
  179. package/dist/utils/azure/azure.test.d.ts +2 -0
  180. package/dist/utils/azure/azure.test.d.ts.map +1 -0
  181. package/dist/utils/azure/azure.test.js +98 -0
  182. package/dist/utils/azure/azure.test.js.map +1 -0
  183. package/dist/utils/config/config.d.ts +27 -0
  184. package/dist/utils/config/config.d.ts.map +1 -0
  185. package/dist/utils/config/config.js +74 -0
  186. package/dist/utils/config/config.js.map +1 -0
  187. package/dist/utils/config/config.test.d.ts +2 -0
  188. package/dist/utils/config/config.test.d.ts.map +1 -0
  189. package/dist/utils/config/config.test.js +64 -0
  190. package/dist/utils/config/config.test.js.map +1 -0
  191. package/dist/utils/db/DB.d.ts +14 -0
  192. package/dist/utils/db/DB.d.ts.map +1 -0
  193. package/dist/utils/db/DB.js +61 -0
  194. package/dist/utils/db/DB.js.map +1 -0
  195. package/dist/utils/db/DB.test.d.ts +2 -0
  196. package/dist/utils/db/DB.test.d.ts.map +1 -0
  197. package/dist/utils/db/DB.test.js +73 -0
  198. package/dist/utils/db/DB.test.js.map +1 -0
  199. package/dist/utils/fs/FS.d.ts +15 -0
  200. package/dist/utils/fs/FS.d.ts.map +1 -0
  201. package/{src → dist}/utils/fs/FS.js +31 -45
  202. package/dist/utils/fs/FS.js.map +1 -0
  203. package/dist/utils/fs/FS.test.d.ts +2 -0
  204. package/dist/utils/fs/FS.test.d.ts.map +1 -0
  205. package/dist/utils/fs/FS.test.js +124 -0
  206. package/dist/utils/fs/FS.test.js.map +1 -0
  207. package/dist/utils/github/github.d.ts +29 -0
  208. package/dist/utils/github/github.d.ts.map +1 -0
  209. package/dist/utils/github/github.js +96 -0
  210. package/dist/utils/github/github.js.map +1 -0
  211. package/dist/utils/github/github.test.d.ts +2 -0
  212. package/dist/utils/github/github.test.d.ts.map +1 -0
  213. package/dist/utils/github/github.test.js +83 -0
  214. package/dist/utils/github/github.test.js.map +1 -0
  215. package/dist/utils/shell/DatabaseShell.d.ts +77 -0
  216. package/dist/utils/shell/DatabaseShell.d.ts.map +1 -0
  217. package/{src → dist}/utils/shell/DatabaseShell.js +73 -87
  218. package/dist/utils/shell/DatabaseShell.js.map +1 -0
  219. package/dist/utils/shell/DatabaseShell.test.d.ts +2 -0
  220. package/dist/utils/shell/DatabaseShell.test.d.ts.map +1 -0
  221. package/dist/utils/shell/DatabaseShell.test.js +78 -0
  222. package/dist/utils/shell/DatabaseShell.test.js.map +1 -0
  223. package/dist/utils/shell/DatabaseShellBuilder.d.ts +67 -0
  224. package/dist/utils/shell/DatabaseShellBuilder.d.ts.map +1 -0
  225. package/{src → dist}/utils/shell/DatabaseShellBuilder.js +50 -59
  226. package/dist/utils/shell/DatabaseShellBuilder.js.map +1 -0
  227. package/dist/utils/shell/DatabaseShellBuilder.test.d.ts +2 -0
  228. package/dist/utils/shell/DatabaseShellBuilder.test.d.ts.map +1 -0
  229. package/dist/utils/shell/DatabaseShellBuilder.test.js +55 -0
  230. package/dist/utils/shell/DatabaseShellBuilder.test.js.map +1 -0
  231. package/dist/utils/shell/Shell.d.ts +30 -0
  232. package/dist/utils/shell/Shell.d.ts.map +1 -0
  233. package/{src → dist}/utils/shell/Shell.js +14 -19
  234. package/dist/utils/shell/Shell.js.map +1 -0
  235. package/dist/utils/shell/Shell.test.d.ts +2 -0
  236. package/dist/utils/shell/Shell.test.d.ts.map +1 -0
  237. package/dist/utils/shell/Shell.test.js +65 -0
  238. package/dist/utils/shell/Shell.test.js.map +1 -0
  239. package/dist/utils/shell/ShellBuilder.d.ts +60 -0
  240. package/dist/utils/shell/ShellBuilder.d.ts.map +1 -0
  241. package/{src → dist}/utils/shell/ShellBuilder.js +23 -44
  242. package/dist/utils/shell/ShellBuilder.js.map +1 -0
  243. package/dist/utils/shell/ShellBuilder.test.d.ts +2 -0
  244. package/dist/utils/shell/ShellBuilder.test.d.ts.map +1 -0
  245. package/dist/utils/shell/ShellBuilder.test.js +39 -0
  246. package/dist/utils/shell/ShellBuilder.test.js.map +1 -0
  247. package/package.json +39 -11
  248. package/.github/dependabot.yml +0 -28
  249. package/.github/workflows/publish.yml +0 -31
  250. package/.husky/commit-msg +0 -1
  251. package/.vscode/settings.json +0 -6
  252. package/commitlint.config.mjs +0 -4
  253. package/src/index.js +0 -130
  254. package/src/modules/adbBridge.js +0 -52
  255. package/src/modules/adbIntentSender.js +0 -82
  256. package/src/modules/changelog.js +0 -60
  257. package/src/modules/csvMerger.js +0 -118
  258. package/src/modules/deleteDB.js +0 -84
  259. package/src/modules/dumpTableToCSV.js +0 -154
  260. package/src/modules/githubDeploymentKey.js +0 -265
  261. package/src/modules/githubDeploymentKeysList.js +0 -199
  262. package/src/modules/githubSecurityAdvisories.js +0 -162
  263. package/src/modules/graphqlSchemaExport.js +0 -61
  264. package/src/modules/rewriteConfig.js +0 -93
  265. package/src/modules/setCLIConfig.js +0 -33
  266. package/src/modules/t003Rewrite.js +0 -64
  267. package/src/modules/t009Search.js +0 -34
  268. package/src/utils/config/config.js +0 -70
  269. package/src/utils/db/DB.js +0 -54
  270. package/src/utils/github/github.js +0 -102
  271. /package/{src → dist}/ressources/wegas_p.ico +0 -0
  272. /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":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deleteDB.test.d.ts.map
@@ -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,3 @@
1
+ export declare function dumpDB(_cli: unknown): Promise<void>;
2
+ export declare function dumpDBMand(_cli: unknown): Promise<void>;
3
+ //# sourceMappingURL=dumpDB.d.ts.map
@@ -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
- let tables = await DB.executeQueryOnDB("SHOW TABLES;", resultsDB.dbName);
57
- const tableKey = Object.keys(tables[0])[0];
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
- default: ""
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
- selectedTables.push(resultsTable.table)
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
- const dumpCommand = `mysqldump ${resultsDB.dataOnly?'--no-create-info':''} -u${config.dbUser} -p${config.dbPassword} -h${config.dbURL} ${resultsDB.dbName} ${selectedTables.join(" ")} > ${results.dumpName}`;
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
- export async function dumpDBMand(cli) {
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
- let tables = await DB.executeQueryOnDB("SHOW TABLES;", results.dbName);
176
- const tableKey = Object.keys(tables[0])[0];
177
- tables = tables.map(row => row[tableKey])
178
-
179
- if (tables == null || tables.length == 0) {
180
- spinner.fail("Database has no tables: " + results.dbName)
181
- } else {
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
- } else {
203
- tableSpinner.info("Column " + tableCol + " not found, Skipping table: " + table)
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dumpDB.test.d.ts.map
@@ -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"}