@qwickapps/server 1.7.2 → 1.8.0

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 (120) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/src/core/control-panel.js +5 -5
  3. package/dist/src/core/control-panel.js.map +1 -1
  4. package/dist/src/core/gateway.d.ts.map +1 -1
  5. package/dist/src/core/gateway.js +117 -15
  6. package/dist/src/core/gateway.js.map +1 -1
  7. package/dist/src/core/plugin-registry.d.ts +70 -0
  8. package/dist/src/core/plugin-registry.d.ts.map +1 -1
  9. package/dist/src/core/plugin-registry.js +94 -0
  10. package/dist/src/core/plugin-registry.js.map +1 -1
  11. package/dist/src/index.d.ts +1 -1
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/plugins/api-keys/api-keys-plugin.d.ts.map +1 -1
  14. package/dist/src/plugins/api-keys/api-keys-plugin.js +53 -1
  15. package/dist/src/plugins/api-keys/api-keys-plugin.js.map +1 -1
  16. package/dist/src/plugins/api-keys/index.d.ts +1 -1
  17. package/dist/src/plugins/api-keys/index.d.ts.map +1 -1
  18. package/dist/src/plugins/api-keys/index.js.map +1 -1
  19. package/dist/src/plugins/api-keys/stores/postgres-store.d.ts.map +1 -1
  20. package/dist/src/plugins/api-keys/stores/postgres-store.js +83 -65
  21. package/dist/src/plugins/api-keys/stores/postgres-store.js.map +1 -1
  22. package/dist/src/plugins/api-keys/types.d.ts +13 -1
  23. package/dist/src/plugins/api-keys/types.d.ts.map +1 -1
  24. package/dist/src/plugins/api-keys/types.js.map +1 -1
  25. package/dist/src/plugins/diagnostics-plugin.d.ts.map +1 -1
  26. package/dist/src/plugins/diagnostics-plugin.js +73 -0
  27. package/dist/src/plugins/diagnostics-plugin.js.map +1 -1
  28. package/dist/src/plugins/index.d.ts +1 -1
  29. package/dist/src/plugins/index.d.ts.map +1 -1
  30. package/dist/src/plugins/maintenance/SeedExecutor.d.ts +2 -0
  31. package/dist/src/plugins/maintenance/SeedExecutor.d.ts.map +1 -1
  32. package/dist/src/plugins/maintenance/SeedExecutor.js +6 -2
  33. package/dist/src/plugins/maintenance/SeedExecutor.js.map +1 -1
  34. package/dist/src/plugins/maintenance/SeedList.d.ts +2 -2
  35. package/dist/src/plugins/maintenance/SeedList.d.ts.map +1 -1
  36. package/dist/src/plugins/maintenance/SeedList.js +39 -14
  37. package/dist/src/plugins/maintenance/SeedList.js.map +1 -1
  38. package/dist/src/plugins/maintenance/SeedManagementPage.d.ts +1 -1
  39. package/dist/src/plugins/maintenance/SeedManagementPage.d.ts.map +1 -1
  40. package/dist/src/plugins/maintenance/SeedManagementPage.js +9 -5
  41. package/dist/src/plugins/maintenance/SeedManagementPage.js.map +1 -1
  42. package/dist/src/plugins/maintenance/seed-executor.d.ts +6 -4
  43. package/dist/src/plugins/maintenance/seed-executor.d.ts.map +1 -1
  44. package/dist/src/plugins/maintenance/seed-executor.js +53 -17
  45. package/dist/src/plugins/maintenance/seed-executor.js.map +1 -1
  46. package/dist/src/plugins/maintenance-plugin.d.ts +24 -0
  47. package/dist/src/plugins/maintenance-plugin.d.ts.map +1 -1
  48. package/dist/src/plugins/maintenance-plugin.js +222 -34
  49. package/dist/src/plugins/maintenance-plugin.js.map +1 -1
  50. package/dist/src/plugins/postgres-plugin.d.ts +12 -0
  51. package/dist/src/plugins/postgres-plugin.d.ts.map +1 -1
  52. package/dist/src/plugins/postgres-plugin.js +319 -5
  53. package/dist/src/plugins/postgres-plugin.js.map +1 -1
  54. package/dist/ui/src/components/ControlPanelApp.d.ts.map +1 -1
  55. package/dist/ui/src/components/ControlPanelApp.js +4 -3
  56. package/dist/ui/src/components/ControlPanelApp.js.map +1 -1
  57. package/dist/ui/src/dashboard/builtInWidgets.d.ts.map +1 -1
  58. package/dist/ui/src/dashboard/builtInWidgets.js +3 -1
  59. package/dist/ui/src/dashboard/builtInWidgets.js.map +1 -1
  60. package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.d.ts.map +1 -1
  61. package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.js +17 -4
  62. package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.js.map +1 -1
  63. package/dist/ui/src/dashboard/widgets/CMSStatusWidget.d.ts.map +1 -1
  64. package/dist/ui/src/dashboard/widgets/CMSStatusWidget.js +5 -1
  65. package/dist/ui/src/dashboard/widgets/CMSStatusWidget.js.map +1 -1
  66. package/dist/ui/src/dashboard/widgets/CacheMaintenanceWidget.d.ts.map +1 -1
  67. package/dist/ui/src/dashboard/widgets/CacheMaintenanceWidget.js +4 -2
  68. package/dist/ui/src/dashboard/widgets/CacheMaintenanceWidget.js.map +1 -1
  69. package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.d.ts +12 -0
  70. package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.d.ts.map +1 -0
  71. package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.js +174 -0
  72. package/dist/ui/src/dashboard/widgets/DatabaseOperationsWidget.js.map +1 -0
  73. package/dist/ui/src/dashboard/widgets/LogsMaintenanceWidget.d.ts.map +1 -1
  74. package/dist/ui/src/dashboard/widgets/LogsMaintenanceWidget.js +6 -3
  75. package/dist/ui/src/dashboard/widgets/LogsMaintenanceWidget.js.map +1 -1
  76. package/dist/ui/src/dashboard/widgets/SeedManagementWidget.d.ts +1 -1
  77. package/dist/ui/src/dashboard/widgets/SeedManagementWidget.d.ts.map +1 -1
  78. package/dist/ui/src/dashboard/widgets/SeedManagementWidget.js +256 -16
  79. package/dist/ui/src/dashboard/widgets/SeedManagementWidget.js.map +1 -1
  80. package/dist/ui/src/dashboard/widgets/index.d.ts +1 -0
  81. package/dist/ui/src/dashboard/widgets/index.d.ts.map +1 -1
  82. package/dist/ui/src/dashboard/widgets/index.js +1 -0
  83. package/dist/ui/src/dashboard/widgets/index.js.map +1 -1
  84. package/dist-ui/assets/index-BkGp7ZKd.js +529 -0
  85. package/dist-ui/assets/index-BkGp7ZKd.js.map +1 -0
  86. package/dist-ui/index.html +1 -1
  87. package/dist-ui-lib/index.js +3735 -3187
  88. package/dist-ui-lib/index.js.map +1 -1
  89. package/dist-ui-lib/src/dashboard/widgets/DatabaseOperationsWidget.d.ts +11 -0
  90. package/dist-ui-lib/src/dashboard/widgets/SeedManagementWidget.d.ts +1 -1
  91. package/dist-ui-lib/src/dashboard/widgets/index.d.ts +1 -0
  92. package/package.json +2 -2
  93. package/src/core/control-panel.ts +5 -5
  94. package/src/core/gateway.ts +135 -15
  95. package/src/core/plugin-registry.ts +171 -0
  96. package/src/index.ts +2 -0
  97. package/src/plugins/api-keys/api-keys-plugin.ts +58 -1
  98. package/src/plugins/api-keys/index.ts +1 -0
  99. package/src/plugins/api-keys/stores/postgres-store.ts +90 -67
  100. package/src/plugins/api-keys/types.ts +14 -1
  101. package/src/plugins/diagnostics-plugin.ts +77 -0
  102. package/src/plugins/index.ts +1 -1
  103. package/src/plugins/maintenance/SeedExecutor.tsx +9 -1
  104. package/src/plugins/maintenance/SeedList.tsx +85 -38
  105. package/src/plugins/maintenance/SeedManagementPage.tsx +10 -4
  106. package/src/plugins/maintenance/seed-executor.ts +56 -17
  107. package/src/plugins/maintenance-plugin.ts +267 -36
  108. package/src/plugins/postgres-plugin.ts +410 -5
  109. package/ui/src/App.tsx +3 -3
  110. package/ui/src/components/ControlPanelApp.tsx +4 -3
  111. package/ui/src/dashboard/builtInWidgets.tsx +3 -0
  112. package/ui/src/dashboard/widgets/CMSMaintenanceWidget.tsx +17 -4
  113. package/ui/src/dashboard/widgets/CMSStatusWidget.tsx +5 -1
  114. package/ui/src/dashboard/widgets/CacheMaintenanceWidget.tsx +4 -2
  115. package/ui/src/dashboard/widgets/DatabaseOperationsWidget.tsx +410 -0
  116. package/ui/src/dashboard/widgets/LogsMaintenanceWidget.tsx +6 -3
  117. package/ui/src/dashboard/widgets/SeedManagementWidget.tsx +533 -49
  118. package/ui/src/dashboard/widgets/index.ts +1 -0
  119. package/dist-ui/assets/index-0gzisPdy.js +0 -528
  120. package/dist-ui/assets/index-0gzisPdy.js.map +0 -1
@@ -15,29 +15,29 @@ const MAX_OUTPUT_SIZE = 100 * 1024;
15
15
  /**
16
16
  * Validate script path to prevent path traversal attacks
17
17
  *
18
- * @param scriptName - Name of the script (e.g., "seed-products.mjs")
18
+ * @param scriptPath - Relative path to the script (e.g., "database/001.init.mjs" or "01-Setup/seed-data.mjs")
19
19
  * @param scriptsPath - Base path for scripts directory
20
- * @returns Resolved path if valid, null if invalid
20
+ * @returns Resolved absolute path if valid, null if invalid
21
21
  */
22
- export function validateScriptPath(scriptName, scriptsPath) {
23
- // Only allow seed-*.mjs pattern
24
- if (!/^seed-[a-z0-9-]+\.mjs$/.test(scriptName)) {
22
+ export function validateScriptPath(scriptPath, scriptsPath) {
23
+ // Only allow .mjs files
24
+ if (!scriptPath.endsWith('.mjs')) {
25
25
  return null;
26
26
  }
27
27
  // Resolve paths
28
28
  const basePath = resolve(scriptsPath);
29
- const scriptPath = resolve(basePath, scriptName);
29
+ const resolvedScriptPath = resolve(basePath, scriptPath);
30
30
  // Ensure resolved path is within scriptsPath (prevent path traversal)
31
31
  // Use relative() for platform-agnostic check (works on Windows and Unix)
32
- const relativePath = relative(basePath, scriptPath);
32
+ const relativePath = relative(basePath, resolvedScriptPath);
33
33
  if (relativePath.startsWith('..') || relativePath.includes('../') || relativePath.includes('..\\')) {
34
34
  return null;
35
35
  }
36
36
  // Ensure file exists
37
- if (!existsSync(scriptPath)) {
37
+ if (!existsSync(resolvedScriptPath)) {
38
38
  return null;
39
39
  }
40
- return scriptPath;
40
+ return resolvedScriptPath;
41
41
  }
42
42
  /**
43
43
  * Send SSE event to client
@@ -65,28 +65,61 @@ export class SeedExecutor {
65
65
  *
66
66
  * @param scriptPath - Absolute path to the script
67
67
  * @param res - Express response object (for SSE streaming)
68
+ * @param databaseUrl - Optional database URL to pass to the script
69
+ * @param projectRoot - Optional project root directory (defaults to script's directory)
68
70
  * @returns Promise resolving to execution result
69
71
  */
70
- async execute(scriptPath, res) {
72
+ async execute(scriptPath, res, databaseUrl, projectRoot) {
71
73
  this.startTime = Date.now();
72
74
  this.outputBuffer = '';
73
75
  this.errorBuffer = '';
74
76
  this.outputSize = 0;
75
77
  return new Promise((resolvePromise, rejectPromise) => {
76
- // Spawn Node.js process with minimal environment
77
- // Use process.execPath to ensure we use the same node binary as the parent process
78
- this.child = spawn(process.execPath, [scriptPath], {
78
+ // Determine if we need tsx (for .ts/.mts files that import TS modules)
79
+ // Use tsx for .mjs files too since they might import from TS source
80
+ const needsTsx = scriptPath.match(/\.(mjs|ts|mts)$/);
81
+ const execCommand = needsTsx ? 'tsx' : process.execPath;
82
+ const execArgs = needsTsx ? [scriptPath] : [scriptPath];
83
+ // Spawn process with TypeScript support if needed
84
+ this.child = spawn(execCommand, execArgs, {
79
85
  env: {
86
+ ...process.env, // Inherit all env vars for tsx to work properly
80
87
  NODE_ENV: process.env.NODE_ENV || 'development',
81
- DATABASE_URI: process.env.DATABASE_URI,
82
- DATABASE_URL: process.env.DATABASE_URL,
88
+ DATABASE_URI: databaseUrl || process.env.DATABASE_URI,
89
+ DATABASE_URL: databaseUrl || process.env.DATABASE_URL,
83
90
  PAYLOAD_PUBLIC_SERVER_URL: process.env.PAYLOAD_PUBLIC_SERVER_URL,
84
91
  NEXT_PUBLIC_SERVER_URL: process.env.NEXT_PUBLIC_SERVER_URL,
85
92
  API_URL: process.env.API_URL,
93
+ PAYLOAD_SECRET: process.env.PAYLOAD_SECRET || 'dev-secret-key-change-in-production',
86
94
  },
87
- stdio: ['ignore', 'pipe', 'pipe'], // stdin: ignore, stdout: pipe, stderr: pipe
88
- cwd: resolve(scriptPath, '..'), // Run from scripts directory
95
+ stdio: ['pipe', 'pipe', 'pipe'], // stdin: pipe, stdout: pipe, stderr: pipe
96
+ cwd: projectRoot || resolve(scriptPath, '..'), // Run from project root (or scripts directory if not provided)
89
97
  });
98
+ // Auto-answer interactive prompts (like Drizzle's schema push confirmation)
99
+ // Send 'y\n' every 500ms to handle any prompts that appear
100
+ const stdinInterval = setInterval(() => {
101
+ if (this.child && this.child.stdin && !this.child.stdin.destroyed) {
102
+ try {
103
+ this.child.stdin.write('y\n');
104
+ }
105
+ catch (err) {
106
+ // Ignore errors - stdin might be closed
107
+ }
108
+ }
109
+ }, 500);
110
+ // Clear interval when process exits
111
+ const cleanupInterval = () => {
112
+ clearInterval(stdinInterval);
113
+ // Close stdin to signal EOF
114
+ if (this.child && this.child.stdin && !this.child.stdin.destroyed) {
115
+ try {
116
+ this.child.stdin.end();
117
+ }
118
+ catch (err) {
119
+ // Ignore errors
120
+ }
121
+ }
122
+ };
90
123
  // Handle stdout
91
124
  this.child.stdout?.on('data', (data) => {
92
125
  const text = data.toString();
@@ -126,6 +159,7 @@ export class SeedExecutor {
126
159
  });
127
160
  // Handle process exit
128
161
  this.child.on('exit', (code, signal) => {
162
+ cleanupInterval(); // Clean up stdin interval
129
163
  const exitCode = code ?? (signal ? 1 : 0);
130
164
  const duration = Date.now() - this.startTime;
131
165
  // Send exit event via SSE
@@ -145,6 +179,7 @@ export class SeedExecutor {
145
179
  });
146
180
  // Handle spawn errors
147
181
  this.child.on('error', (err) => {
182
+ cleanupInterval(); // Clean up stdin interval
148
183
  sendSSEEvent(res, {
149
184
  type: 'error',
150
185
  data: err.message,
@@ -154,6 +189,7 @@ export class SeedExecutor {
154
189
  });
155
190
  // Handle SSE connection close - terminate child process
156
191
  res.on('close', () => {
192
+ cleanupInterval(); // Clean up stdin interval
157
193
  if (this.child && !this.child.killed) {
158
194
  this.child.kill('SIGTERM');
159
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seed-executor.js","sourceRoot":"","sources":["../../../../src/plugins/maintenance/seed-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seed-executor.js","sourceRoot":"","sources":["../../../../src/plugins/maintenance/seed-executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAwBzC;;GAEG;AACH,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,WAAmB;IACxE,wBAAwB;IACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IAChB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEzD,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IAC5D,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACnG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,GAAa,EAAE,KAAe;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IAAzB;QACU,UAAK,GAAwB,IAAI,CAAC;QAClC,cAAS,GAAW,CAAC,CAAC;QACtB,iBAAY,GAAW,EAAE,CAAC;QAC1B,gBAAW,GAAW,EAAE,CAAC;QACzB,eAAU,GAAW,CAAC,CAAC;IA4KjC,CAAC;IA1KC;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,GAAa,EAAE,WAAoB,EAAE,WAAoB;QACzF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;YACnD,uEAAuE;YACvE,oEAAoE;YACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAExD,kDAAkD;YAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE;gBACxC,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG,EAAE,gDAAgD;oBAChE,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;oBAC/C,YAAY,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;oBACrD,YAAY,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;oBACrD,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;oBAChE,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;oBAC1D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;oBAC5B,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,qCAAqC;iBACpF;gBACD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,0CAA0C;gBAC3E,GAAG,EAAE,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,+DAA+D;aAC/G,CAAC,CAAC;YAEH,4EAA4E;YAC5E,2DAA2D;YAC3D,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;gBACrC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClE,IAAI,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAChC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,wCAAwC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,oCAAoC;YACpC,MAAM,eAAe,GAAG,GAAG,EAAE;gBAC3B,aAAa,CAAC,aAAa,CAAC,CAAC;gBAC7B,4BAA4B;gBAC5B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;oBAClE,IAAI,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACzB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,gBAAgB;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YAEF,gBAAgB;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE7B,eAAe;gBACf,YAAY,CAAC,GAAG,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,kCAAkC;gBAClC,IAAI,IAAI,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;oBACtC,MAAM,SAAS,GAAG,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC;oBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBACvC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;oBAC3B,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;oBAEhC,IAAI,IAAI,CAAC,UAAU,IAAI,eAAe,EAAE,CAAC;wBACvC,IAAI,CAAC,YAAY,IAAI,mCAAmC,CAAC;oBAC3D,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,gBAAgB;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE7B,eAAe;gBACf,YAAY,CAAC,GAAG,EAAE;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAI;oBACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,wCAAwC;gBACxC,IAAI,IAAI,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;oBACtC,MAAM,SAAS,GAAG,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC;oBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBACvC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC;oBAC1B,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACrC,eAAe,EAAE,CAAC,CAAC,0BAA0B;gBAE7C,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;gBAE7C,0BAA0B;gBAC1B,YAAY,CAAC,GAAG,EAAE;oBAChB,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;oBACpD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,sBAAsB;gBACtB,cAAc,CAAC;oBACb,QAAQ;oBACR,QAAQ;oBACR,MAAM,EAAE,IAAI,CAAC,YAAY;oBACzB,KAAK,EAAE,IAAI,CAAC,WAAW;iBACxB,CAAC,CAAC;gBAEH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACpC,eAAe,EAAE,CAAC,CAAC,0BAA0B;gBAE7C,YAAY,CAAC,GAAG,EAAE;oBAChB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,GAAG,CAAC,OAAO;oBACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBAEH,aAAa,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,wDAAwD;YACxD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,eAAe,EAAE,CAAC,CAAC,0BAA0B;gBAC7C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
@@ -9,7 +9,29 @@
9
9
  *
10
10
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
11
  */
12
+ import type { Response } from 'express';
12
13
  import type { Plugin } from '../core/plugin-registry.js';
14
+ /**
15
+ * Custom seed task handler
16
+ */
17
+ export interface SeedTaskHandler {
18
+ (options?: Record<string, any>, res?: Response): Promise<void>;
19
+ }
20
+ /**
21
+ * Custom seed task definition
22
+ */
23
+ export interface SeedTask {
24
+ /** Unique task identifier */
25
+ id: string;
26
+ /** Display name */
27
+ name: string;
28
+ /** Description of what this task does */
29
+ description: string;
30
+ /** Task handler function */
31
+ handler: SeedTaskHandler;
32
+ /** Optional task options/parameters */
33
+ options?: Record<string, any>;
34
+ }
13
35
  export interface MaintenancePluginConfig {
14
36
  /** Path to scripts directory (default: './scripts') */
15
37
  scriptsPath?: string;
@@ -27,6 +49,8 @@ export interface MaintenancePluginConfig {
27
49
  enableEnvManagement?: boolean;
28
50
  /** Enable database operations (default: true) */
29
51
  enableDatabaseOps?: boolean;
52
+ /** Custom seed tasks */
53
+ customTasks?: SeedTask[];
30
54
  }
31
55
  /**
32
56
  * Create a maintenance plugin
@@ -1 +1 @@
1
- {"version":3,"file":"maintenance-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAIvF,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,GAAE,uBAA4B,GAAG,MAAM,CAmZpF"}
1
+ {"version":3,"file":"maintenance-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAuEvF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,GAAE,uBAA4B,GAAG,MAAM,CA6hBpF"}
@@ -9,10 +9,70 @@
9
9
  *
10
10
  * Copyright (c) 2025 QwickApps.com. All rights reserved.
11
11
  */
12
- import { readdirSync, statSync } from 'fs';
13
- import { resolve } from 'path';
12
+ import { readdirSync, statSync, readFileSync } from 'fs';
13
+ import { resolve, join, relative } from 'path';
14
14
  import { SeedExecutor, validateScriptPath } from './maintenance/seed-executor.js';
15
15
  import { getPostgres, hasPostgres } from './postgres-plugin.js';
16
+ /**
17
+ * Extract description from JSDoc comment at top of file
18
+ */
19
+ function extractDescription(filePath) {
20
+ try {
21
+ const content = readFileSync(filePath, 'utf-8');
22
+ // Match JSDoc comment at start of file (after any whitespace)
23
+ const jsdocMatch = content.match(/^\s*\/\*\*\s*\n([\s\S]*?)\*\//);
24
+ if (jsdocMatch) {
25
+ // Extract lines and clean up asterisks and whitespace
26
+ const lines = jsdocMatch[1]
27
+ .split('\n')
28
+ .map(line => line.replace(/^\s*\*\s?/, '').trim())
29
+ .filter(line => line.length > 0);
30
+ // Skip the first line if it's just the title (will be shown separately)
31
+ // Return subsequent lines as the description
32
+ return lines.slice(1).join(' ').trim() || undefined;
33
+ }
34
+ }
35
+ catch (err) {
36
+ // Failed to read file or parse description
37
+ }
38
+ return undefined;
39
+ }
40
+ /**
41
+ * Recursively scan directory for .mjs files
42
+ */
43
+ function scanSeedScripts(dir, basePath = dir) {
44
+ const results = [];
45
+ try {
46
+ const entries = readdirSync(dir, { withFileTypes: true });
47
+ for (const entry of entries) {
48
+ const fullPath = join(dir, entry.name);
49
+ if (entry.isDirectory()) {
50
+ // Recursively scan subdirectories
51
+ results.push(...scanSeedScripts(fullPath, basePath));
52
+ }
53
+ else if (entry.isFile() && entry.name.endsWith('.mjs')) {
54
+ // Found a .mjs file
55
+ const stats = statSync(fullPath);
56
+ const relativePath = relative(basePath, fullPath);
57
+ const description = extractDescription(fullPath);
58
+ results.push({
59
+ type: 'file',
60
+ name: entry.name,
61
+ path: relativePath, // Relative path from scripts directory
62
+ fullPath: fullPath, // Absolute path
63
+ size: stats.size,
64
+ createdAt: stats.birthtime,
65
+ modifiedAt: stats.mtime,
66
+ description, // Add description from JSDoc
67
+ });
68
+ }
69
+ }
70
+ }
71
+ catch (err) {
72
+ // Directory not accessible, return empty array
73
+ }
74
+ return results;
75
+ }
16
76
  /**
17
77
  * Create a maintenance plugin
18
78
  */
@@ -27,6 +87,36 @@ export function createMaintenancePlugin(config = {}) {
27
87
  async onStart(_pluginConfig, registry) {
28
88
  const logger = registry.getLogger('maintenance');
29
89
  logger.info('Maintenance plugin starting...');
90
+ // Initialize seed_executions table if PostgreSQL is available
91
+ if (hasPostgres()) {
92
+ try {
93
+ const db = getPostgres();
94
+ await db.queryRaw(`
95
+ CREATE TABLE IF NOT EXISTS seed_executions (
96
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
97
+ name TEXT NOT NULL,
98
+ status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'failed')),
99
+ started_at TIMESTAMPTZ NOT NULL,
100
+ completed_at TIMESTAMPTZ,
101
+ exit_code INTEGER,
102
+ output TEXT,
103
+ error TEXT,
104
+ duration_ms INTEGER,
105
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
106
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
107
+ )
108
+ `);
109
+ // Create index on status for faster queries
110
+ await db.queryRaw(`
111
+ CREATE INDEX IF NOT EXISTS idx_seed_executions_status
112
+ ON seed_executions(status)
113
+ `);
114
+ logger.debug('Seed executions table initialized');
115
+ }
116
+ catch (error) {
117
+ logger.error('Failed to initialize seed_executions table', { error });
118
+ }
119
+ }
30
120
  // Clean up orphaned executions from previous crashes
31
121
  if (hasPostgres()) {
32
122
  try {
@@ -74,7 +164,7 @@ export function createMaintenancePlugin(config = {}) {
74
164
  if (!hasPostgres()) {
75
165
  logger.warn('Seed management requires PostgreSQL plugin for execution history');
76
166
  }
77
- // GET /seeds/discover - List available seed scripts
167
+ // GET /seeds/discover - List available seed scripts and custom tasks
78
168
  registry.addRoute({
79
169
  method: 'get',
80
170
  path: '/seeds/discover',
@@ -82,23 +172,27 @@ export function createMaintenancePlugin(config = {}) {
82
172
  handler: (_req, res) => {
83
173
  try {
84
174
  const resolvedPath = resolve(scriptsPath);
85
- const files = readdirSync(resolvedPath);
86
- // Filter for seed-*.mjs files
87
- const seedFiles = files
88
- .filter((file) => /^seed-[a-z0-9-]+\.mjs$/.test(file))
89
- .map((file) => {
90
- const filePath = resolve(resolvedPath, file);
91
- const stats = statSync(filePath);
92
- return {
93
- name: file,
94
- path: filePath,
95
- size: stats.size,
96
- createdAt: stats.birthtime,
97
- modifiedAt: stats.mtime,
98
- };
99
- })
100
- .sort((a, b) => a.name.localeCompare(b.name));
101
- res.json({ seeds: seedFiles });
175
+ let seedFiles = [];
176
+ try {
177
+ // Recursively scan for .mjs files
178
+ seedFiles = scanSeedScripts(resolvedPath);
179
+ // Sort by relative path (natural ordering respects numbered prefixes)
180
+ // Example: "01-Setup/001.init.mjs" comes before "02-Production/001.seed.mjs"
181
+ seedFiles.sort((a, b) => a.path.localeCompare(b.path, undefined, { numeric: true }));
182
+ }
183
+ catch (err) {
184
+ // Scripts directory may not exist, which is fine if we have custom tasks
185
+ logger.debug('Scripts directory not found or not readable');
186
+ }
187
+ // Add custom tasks
188
+ const customTasks = (config.customTasks || []).map((task) => ({
189
+ type: 'task',
190
+ id: task.id,
191
+ name: task.name,
192
+ description: task.description,
193
+ options: task.options,
194
+ }));
195
+ res.json({ seeds: [...seedFiles, ...customTasks] });
102
196
  }
103
197
  catch (error) {
104
198
  logger.error('Failed to discover seed scripts', { error });
@@ -109,21 +203,44 @@ export function createMaintenancePlugin(config = {}) {
109
203
  }
110
204
  },
111
205
  });
112
- // POST /seeds/execute - Execute a seed script
206
+ // POST /seeds/execute - Execute a seed script or custom task
113
207
  registry.addRoute({
114
208
  method: 'post',
115
209
  path: '/seeds/execute',
116
210
  pluginId: 'maintenance',
117
211
  handler: async (req, res) => {
118
212
  try {
119
- const { name } = req.body;
213
+ const { name, type, options } = req.body;
120
214
  if (!name || typeof name !== 'string') {
121
215
  return res.status(400).json({ error: 'Script name is required' });
122
216
  }
123
- // Validate script path
124
- const scriptPath = validateScriptPath(name, scriptsPath);
125
- if (!scriptPath) {
126
- return res.status(400).json({ error: 'Invalid script name or file not found' });
217
+ // Ensure seed_executions table exists (lazy initialization)
218
+ if (hasPostgres()) {
219
+ const db = getPostgres();
220
+ try {
221
+ await db.queryRaw(`
222
+ CREATE TABLE IF NOT EXISTS seed_executions (
223
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
224
+ name TEXT NOT NULL,
225
+ status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'failed')),
226
+ started_at TIMESTAMPTZ NOT NULL,
227
+ completed_at TIMESTAMPTZ,
228
+ exit_code INTEGER,
229
+ output TEXT,
230
+ error TEXT,
231
+ duration_ms INTEGER,
232
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
233
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
234
+ )
235
+ `);
236
+ await db.queryRaw(`
237
+ CREATE INDEX IF NOT EXISTS idx_seed_executions_status
238
+ ON seed_executions(status)
239
+ `);
240
+ }
241
+ catch (err) {
242
+ logger.debug('Table initialization check', { err });
243
+ }
127
244
  }
128
245
  // Check for concurrent execution
129
246
  if (hasPostgres()) {
@@ -151,10 +268,36 @@ export function createMaintenancePlugin(config = {}) {
151
268
  RETURNING id`, [name, 'running']);
152
269
  executionId = result?.id || null;
153
270
  }
154
- // Execute seed script
155
- const executor = new SeedExecutor();
271
+ const startTime = Date.now();
272
+ let exitCode = 0;
273
+ let output = '';
274
+ let error = '';
156
275
  try {
157
- const result = await executor.execute(scriptPath, res);
276
+ // Execute based on type
277
+ if (type === 'task') {
278
+ // Find custom task
279
+ const task = (config.customTasks || []).find((t) => t.id === name);
280
+ if (!task) {
281
+ throw new Error(`Custom task not found: ${name}`);
282
+ }
283
+ // Execute custom task handler with SSE streaming
284
+ await task.handler(options || {}, res);
285
+ }
286
+ else {
287
+ // Execute file-based seed script
288
+ const scriptPath = validateScriptPath(name, scriptsPath);
289
+ if (!scriptPath) {
290
+ throw new Error('Invalid script name or file not found');
291
+ }
292
+ const executor = new SeedExecutor();
293
+ // Project root is one level up from scripts directory
294
+ const projectRoot = resolve(scriptsPath, '..');
295
+ const result = await executor.execute(scriptPath, res, config.databaseUrl, projectRoot);
296
+ exitCode = result.exitCode;
297
+ output = result.output;
298
+ error = result.error;
299
+ }
300
+ const duration = Date.now() - startTime;
158
301
  // Update execution record
159
302
  if (hasPostgres() && executionId) {
160
303
  const db = getPostgres();
@@ -162,11 +305,11 @@ export function createMaintenancePlugin(config = {}) {
162
305
  SET status = $1, completed_at = NOW(), exit_code = $2,
163
306
  output = $3, error = $4, duration_ms = $5, updated_at = NOW()
164
307
  WHERE id = $6`, [
165
- result.exitCode === 0 ? 'completed' : 'failed',
166
- result.exitCode,
167
- result.output,
168
- result.error,
169
- result.duration,
308
+ exitCode === 0 ? 'completed' : 'failed',
309
+ exitCode,
310
+ output,
311
+ error,
312
+ duration,
170
313
  executionId,
171
314
  ]);
172
315
  }
@@ -199,6 +342,51 @@ export function createMaintenancePlugin(config = {}) {
199
342
  }
200
343
  },
201
344
  });
345
+ // POST /database/reset - Drop and recreate database schema (local/dev only)
346
+ registry.addRoute({
347
+ method: 'post',
348
+ path: '/database/reset',
349
+ pluginId: 'maintenance',
350
+ handler: async (req, res) => {
351
+ try {
352
+ // Security: Only allow in local or development environments
353
+ const nodeEnv = process.env.NODE_ENV?.toLowerCase();
354
+ if (nodeEnv !== 'local' && nodeEnv !== 'development') {
355
+ return res.status(403).json({
356
+ error: 'Database reset is only available in local or development environments',
357
+ currentEnv: nodeEnv || 'production',
358
+ });
359
+ }
360
+ if (!hasPostgres()) {
361
+ return res.status(503).json({
362
+ error: 'PostgreSQL plugin required for database reset',
363
+ });
364
+ }
365
+ const db = getPostgres();
366
+ // Drop and recreate public schema (removes all tables, data, etc.)
367
+ await db.queryRaw('DROP SCHEMA IF EXISTS public CASCADE');
368
+ await db.queryRaw('CREATE SCHEMA public');
369
+ await db.queryRaw('GRANT ALL ON SCHEMA public TO public');
370
+ await db.queryRaw('GRANT ALL ON SCHEMA public TO postgres');
371
+ await db.queryRaw('GRANT ALL ON SCHEMA public TO qwickapps');
372
+ // Grant default privileges for future tables and sequences
373
+ await db.queryRaw('ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO qwickapps');
374
+ await db.queryRaw('ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO qwickapps');
375
+ res.json({
376
+ success: true,
377
+ message: 'Database schema has been reset. All tables and data have been deleted.',
378
+ timestamp: new Date().toISOString(),
379
+ });
380
+ }
381
+ catch (error) {
382
+ logger.error('Database reset failed', { error });
383
+ res.status(500).json({
384
+ error: 'Failed to reset database',
385
+ message: error instanceof Error ? error.message : String(error),
386
+ });
387
+ }
388
+ },
389
+ });
202
390
  // GET /seeds/history - List execution history
203
391
  registry.addRoute({
204
392
  method: 'get',
@@ -1 +1 @@
1
- {"version":3,"file":"maintenance-plugin.js","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maintenance-plugin.js","sourceRoot":"","sources":["../../../src/plugins/maintenance-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAG/C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,8DAA8D;QAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAElE,IAAI,UAAU,EAAE,CAAC;YACf,sDAAsD;YACtD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC;iBACxB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;iBACjD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEnC,wEAAwE;YACxE,6CAA6C;YAC7C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2CAA2C;IAC7C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW,EAAE,WAAmB,GAAG;IAC1D,MAAM,OAAO,GAAU,EAAE,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAEvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,kCAAkC;gBAClC,OAAO,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,oBAAoB;gBACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjC,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAEjD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,YAAY,EAAE,uCAAuC;oBAC3D,QAAQ,EAAE,QAAQ,EAAE,gBAAgB;oBACpC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,KAAK,CAAC,KAAK;oBACvB,WAAW,EAAE,6BAA6B;iBAC3C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,+CAA+C;IACjD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAsDD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAkC,EAAE;IAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC;IACtD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,cAAc,CAAC;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,WAAW,CAAC;IAEtD,OAAO;QACL,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAEhB,KAAK,CAAC,OAAO,CAAC,aAA2B,EAAE,QAAwB;YACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAE9C,8DAA8D;YAC9D,IAAI,WAAW,EAAE,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;WAcjB,CAAC,CAAC;oBAEH,4CAA4C;oBAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC;;;WAGjB,CAAC,CAAC;oBAEH,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACpD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,IAAI,WAAW,EAAE,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;oBACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC9B;;;;;sCAK0B,CAC3B,CAAC;oBACF,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;wBAC3C,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,QAAQ,6BAA6B,CAAC,CAAC;oBAC1E,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,QAAQ,CAAC,QAAQ,CAAC;gBAChB,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;oBACxC,GAAG,CAAC,IAAI,CAAC;wBACP,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE;4BACR,KAAK,EAAE,MAAM,CAAC,WAAW,KAAK,KAAK;4BACnC,cAAc,EAAE,MAAM,CAAC,oBAAoB,KAAK,KAAK;4BACrD,aAAa,EAAE,MAAM,CAAC,mBAAmB,KAAK,KAAK;4BACnD,WAAW,EAAE,MAAM,CAAC,iBAAiB,KAAK,KAAK;yBAChD;wBACD,MAAM,EAAE;4BACN,WAAW;4BACX,WAAW;4BACX,WAAW;yBACZ;qBACF,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;YAEH,kCAAkC;YAClC,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBACjC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAExC,+CAA+C;gBAC/C,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;gBAClF,CAAC;gBAED,qEAAqE;gBACrE,QAAQ,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,iBAAiB;oBACvB,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;wBACxC,IAAI,CAAC;4BACH,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;4BAC1C,IAAI,SAAS,GAAU,EAAE,CAAC;4BAE1B,IAAI,CAAC;gCACH,kCAAkC;gCAClC,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;gCAE1C,sEAAsE;gCACtE,6EAA6E;gCAC7E,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4BACvF,CAAC;4BAAC,OAAO,GAAG,EAAE,CAAC;gCACb,yEAAyE;gCACzE,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;4BAC9D,CAAC;4BAED,mBAAmB;4BACnB,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gCAC5D,IAAI,EAAE,MAAM;gCACZ,EAAE,EAAE,IAAI,CAAC,EAAE;gCACX,IAAI,EAAE,IAAI,CAAC,IAAI;gCACf,WAAW,EAAE,IAAI,CAAC,WAAW;gCAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;6BACtB,CAAC,CAAC,CAAC;4BAEJ,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;wBACtD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACnB,KAAK,EAAE,iCAAiC;gCACxC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAChE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBAEH,6DAA6D;gBAC7D,QAAQ,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;wBAC7C,IAAI,CAAC;4BACH,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;4BAEzC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gCACtC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;4BACpE,CAAC;4BAED,4DAA4D;4BAC5D,IAAI,WAAW,EAAE,EAAE,CAAC;gCAClB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;gCACzB,IAAI,CAAC;oCACH,MAAM,EAAE,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;mBAcjB,CAAC,CAAC;oCACH,MAAM,EAAE,CAAC,QAAQ,CAAC;;;mBAGjB,CAAC,CAAC;gCACL,CAAC;gCAAC,OAAO,GAAG,EAAE,CAAC;oCACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gCACtD,CAAC;4BACH,CAAC;4BAED,iCAAiC;4BACjC,IAAI,WAAW,EAAE,EAAE,CAAC;gCAClB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;gCACzB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC/B,kDAAkD,EAClD,CAAC,SAAS,CAAC,CACZ,CAAC;gCAEF,IAAI,OAAO,EAAE,CAAC;oCACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wCAC1B,KAAK,EAAE,4DAA4D;qCACpE,CAAC,CAAC;gCACL,CAAC;4BACH,CAAC;4BAED,kBAAkB;4BAClB,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;4BACnD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;4BAC3C,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;4BAC1C,GAAG,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B;4BACpE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,CAAC,sBAAsB;4BACrE,GAAG,CAAC,YAAY,EAAE,CAAC;4BAEnB,sCAAsC;4BACtC,IAAI,WAAW,GAAkB,IAAI,CAAC;4BACtC,IAAI,WAAW,EAAE,EAAE,CAAC;gCAClB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;gCACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC9B;;gCAEc,EACd,CAAC,IAAI,EAAE,SAAS,CAAC,CAClB,CAAC;gCACF,WAAW,GAAG,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;4BACnC,CAAC;4BAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;4BACjB,IAAI,MAAM,GAAG,EAAE,CAAC;4BAChB,IAAI,KAAK,GAAG,EAAE,CAAC;4BAEf,IAAI,CAAC;gCACH,wBAAwB;gCACxB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oCACpB,mBAAmB;oCACnB,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;oCACnE,IAAI,CAAC,IAAI,EAAE,CAAC;wCACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;oCACpD,CAAC;oCAED,iDAAiD;oCACjD,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;gCACzC,CAAC;qCAAM,CAAC;oCACN,iCAAiC;oCACjC,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;oCACzD,IAAI,CAAC,UAAU,EAAE,CAAC;wCAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;oCAC3D,CAAC;oCAED,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;oCACpC,sDAAsD;oCACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oCAC/C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oCACxF,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oCAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oCACvB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gCACvB,CAAC;gCAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gCAExC,0BAA0B;gCAC1B,IAAI,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC;oCACjC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;oCACzB,MAAM,EAAE,CAAC,KAAK,CACZ;;;mCAGe,EACf;wCACE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;wCACvC,QAAQ;wCACR,MAAM;wCACN,KAAK;wCACL,QAAQ;wCACR,WAAW;qCACZ,CACF,CAAC;gCACJ,CAAC;gCAED,GAAG,CAAC,GAAG,EAAE,CAAC;4BACZ,CAAC;4BAAC,OAAO,KAAK,EAAE,CAAC;gCACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gCAEvD,4CAA4C;gCAC5C,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC;oCAChC,IAAI,EAAE,OAAO;oCACb,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oCAC5D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iCACpC,CAAC,MAAM,CAAC,CAAC;gCAEV,oCAAoC;gCACpC,IAAI,WAAW,EAAE,IAAI,WAAW,EAAE,CAAC;oCACjC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;oCACzB,MAAM,EAAE,CAAC,KAAK,CACZ;;mCAEe,EACf,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAChF,CAAC;gCACJ,CAAC;gCAED,GAAG,CAAC,GAAG,EAAE,CAAC;4BACZ,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC1D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACnB,KAAK,EAAE,gCAAgC;gCACvC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAChE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBAEH,4EAA4E;gBAC5E,QAAQ,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,iBAAiB;oBACvB,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;wBAC7C,IAAI,CAAC;4BACH,4DAA4D;4BAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;4BACpD,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gCACrD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oCAC1B,KAAK,EAAE,uEAAuE;oCAC9E,UAAU,EAAE,OAAO,IAAI,YAAY;iCACpC,CAAC,CAAC;4BACL,CAAC;4BAED,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gCACnB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oCAC1B,KAAK,EAAE,+CAA+C;iCACvD,CAAC,CAAC;4BACL,CAAC;4BAED,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;4BAEzB,mEAAmE;4BACnE,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;4BAC1D,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;4BAC1C,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;4BAC1D,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC;4BAC5D,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;4BAE7D,2DAA2D;4BAC3D,MAAM,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC,CAAC;4BAChG,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC,CAAC;4BAEnG,GAAG,CAAC,IAAI,CAAC;gCACP,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,wEAAwE;gCACjF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BACpC,CAAC,CAAC;wBACL,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;4BACjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACnB,KAAK,EAAE,0BAA0B;gCACjC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAChE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBAEH,8CAA8C;gBAC9C,QAAQ,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,gBAAgB;oBACtB,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;wBAC7C,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;4BACnB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1B,KAAK,EAAE,kDAAkD;6BAC1D,CAAC,CAAC;wBACL,CAAC;wBAED,IAAI,CAAC;4BACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;4BACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAe,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;4BACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC,IAAI,CAAC,CAAC;4BACzD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;4BAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAgB,CAAC;4BAE1C,cAAc;4BACd,IAAI,WAAW,GAAG,EAAE,CAAC;4BACrB,MAAM,MAAM,GAAc,EAAE,CAAC;4BAE7B,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gCAClE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gCACpB,WAAW,GAAG,mBAAmB,MAAM,CAAC,MAAM,EAAE,CAAC;4BACnD,CAAC;4BAED,IAAI,MAAM,EAAE,CAAC;gCACX,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;gCAC3B,WAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC;4BACpF,CAAC;4BAED,kBAAkB;4BAClB,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CACnC,iDAAiD,WAAW,EAAE,EAC9D,MAAM,CACP,CAAC;4BACF,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;4BAEtD,iBAAiB;4BACjB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;4BAC3B,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,KAAK,CAC/B;;;mBAGG,WAAW;;0BAEJ,MAAM,CAAC,MAAM,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,EACtD,MAAM,CACP,CAAC;4BAEF,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;wBACjD,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACnB,KAAK,EAAE,iCAAiC;gCACxC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAChE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;gBAEH,iDAAiD;gBACjD,QAAQ,CAAC,QAAQ,CAAC;oBAChB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,oBAAoB;oBAC1B,QAAQ,EAAE,aAAa;oBACvB,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;wBAC7C,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;4BACnB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1B,KAAK,EAAE,kDAAkD;6BAC1D,CAAC,CAAC;wBACL,CAAC;wBAED,IAAI,CAAC;4BACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;4BACzB,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;4BAE1B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CACjC,6CAA6C,EAC7C,CAAC,EAAE,CAAC,CACL,CAAC;4BAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gCACf,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;4BAChE,CAAC;4BAED,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC1B,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;4BAC3D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gCACnB,KAAK,EAAE,iCAAiC;gCACxC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAChE,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;YAED,+BAA+B;YAC/B,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;gBACjC,QAAQ,CAAC,SAAS,CAAC;oBACjB,EAAE,EAAE,iBAAiB;oBACrB,KAAK,EAAE,iBAAiB;oBACxB,SAAS,EAAE,sBAAsB;oBACjC,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,IAAI,EAAE,sCAAsC;oBAC3D,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,wCAAwC;YACxC,IAAI,MAAM,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;gBAC1C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACxC,+BAA+B;gBAE/B,QAAQ,CAAC,SAAS,CAAC;oBACjB,EAAE,EAAE,iBAAiB;oBACrB,KAAK,EAAE,iBAAiB;oBACxB,SAAS,EAAE,sBAAsB;oBACjC,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,KAAK;oBACpB,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,wDAAwD;YACxD,IAAI,MAAM,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;gBACzC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACxD,+BAA+B;gBAE/B,QAAQ,CAAC,SAAS,CAAC;oBACjB,EAAE,EAAE,oBAAoB;oBACxB,KAAK,EAAE,2BAA2B;oBAClC,SAAS,EAAE,yBAAyB;oBACpC,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,KAAK;oBACpB,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,2CAA2C;YAC3C,IAAI,MAAM,CAAC,iBAAiB,KAAK,KAAK,EAAE,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC5C,+BAA+B;gBAE/B,QAAQ,CAAC,SAAS,CAAC;oBACjB,EAAE,EAAE,cAAc;oBAClB,KAAK,EAAE,qBAAqB;oBAC5B,SAAS,EAAE,mBAAmB;oBAC9B,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,KAAK;oBACpB,QAAQ,EAAE,aAAa;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,mBAAmB;YACnB,QAAQ,CAAC,OAAO,CAAC;gBACf,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,cAAc;gBACrB,SAAS,EAAE,2BAA2B;gBACtC,KAAK,EAAE,aAAa;gBACpB,QAAQ,EAAE,aAAa;aACxB,CAAC,CAAC;YAEH,6BAA6B;YAC7B,QAAQ,CAAC,WAAW,CAAC;gBACnB,EAAE,EAAE,aAAa;gBACjB,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,aAAa;gBACvB,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,CAAC,MAAM;YACV,oBAAoB;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -75,6 +75,18 @@ export interface PostgresPluginConfig {
75
75
  onConnect?: (client: pg.PoolClient) => Promise<void>;
76
76
  /** Called on pool errors */
77
77
  onError?: (error: Error) => void;
78
+ /** Admin user for database operations (e.g., 'postgres') */
79
+ adminUser?: string;
80
+ /** Admin password for database operations */
81
+ adminPassword?: string;
82
+ /** Admin database to connect to for operations (default: 'postgres') */
83
+ adminDatabase?: string;
84
+ /** Database name to create/ensure exists (parsed from url if not provided) */
85
+ databaseName?: string;
86
+ /** User who should own the database (parsed from url if not provided) */
87
+ databaseOwner?: string;
88
+ /** Automatically initialize database if connection fails (default: true if admin credentials provided) */
89
+ autoInitialize?: boolean;
78
90
  }
79
91
  /**
80
92
  * Transaction callback function
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,2DAA2D;IAC3D,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;IAEf,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,4BAA4B;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEpC,sCAAsC;IACtC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAElF,mDAAmD;IACnD,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1F,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAEnE;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7D,uDAAuD;IACvD,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC;IAEnB,0BAA0B;IAC1B,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7D,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAKD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAY,GAAG,gBAAgB,CAM9D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAY,GAAG,OAAO,CAErD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,SAAY,GACvB,MAAM,CAqKR"}
1
+ {"version":3,"file":"postgres-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"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"}