@polardbx/pxbaas 0.0.0-stage → 0.1.0-beta.1

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 (264) hide show
  1. package/bin/pxbaas.js +13 -0
  2. package/dist/app/preflight.d.ts +38 -0
  3. package/dist/app/preflight.d.ts.map +1 -0
  4. package/dist/app/preflight.js +79 -0
  5. package/dist/app/preflight.js.map +1 -0
  6. package/dist/app/spec-lint.d.ts +45 -0
  7. package/dist/app/spec-lint.d.ts.map +1 -0
  8. package/dist/app/spec-lint.js +407 -0
  9. package/dist/app/spec-lint.js.map +1 -0
  10. package/dist/app/templates.d.ts +143 -0
  11. package/dist/app/templates.d.ts.map +1 -0
  12. package/dist/app/templates.js +151 -0
  13. package/dist/app/templates.js.map +1 -0
  14. package/dist/cli/root.d.ts +3 -0
  15. package/dist/cli/root.d.ts.map +1 -0
  16. package/dist/cli/root.js +69 -0
  17. package/dist/cli/root.js.map +1 -0
  18. package/dist/commands/app/index.d.ts +8 -0
  19. package/dist/commands/app/index.d.ts.map +1 -0
  20. package/dist/commands/app/index.js +1267 -0
  21. package/dist/commands/app/index.js.map +1 -0
  22. package/dist/commands/auth/index.d.ts +3 -0
  23. package/dist/commands/auth/index.d.ts.map +1 -0
  24. package/dist/commands/auth/index.js +198 -0
  25. package/dist/commands/auth/index.js.map +1 -0
  26. package/dist/commands/completion/index.d.ts +3 -0
  27. package/dist/commands/completion/index.d.ts.map +1 -0
  28. package/dist/commands/completion/index.js +10 -0
  29. package/dist/commands/completion/index.js.map +1 -0
  30. package/dist/commands/data/index.d.ts +3 -0
  31. package/dist/commands/data/index.d.ts.map +1 -0
  32. package/dist/commands/data/index.js +245 -0
  33. package/dist/commands/data/index.js.map +1 -0
  34. package/dist/commands/db/index.d.ts +14 -0
  35. package/dist/commands/db/index.d.ts.map +1 -0
  36. package/dist/commands/db/index.js +355 -0
  37. package/dist/commands/db/index.js.map +1 -0
  38. package/dist/commands/doctor/index.d.ts +3 -0
  39. package/dist/commands/doctor/index.d.ts.map +1 -0
  40. package/dist/commands/doctor/index.js +305 -0
  41. package/dist/commands/doctor/index.js.map +1 -0
  42. package/dist/commands/functions/delete.d.ts +3 -0
  43. package/dist/commands/functions/delete.d.ts.map +1 -0
  44. package/dist/commands/functions/delete.js +55 -0
  45. package/dist/commands/functions/delete.js.map +1 -0
  46. package/dist/commands/functions/deploy.d.ts +3 -0
  47. package/dist/commands/functions/deploy.d.ts.map +1 -0
  48. package/dist/commands/functions/deploy.js +118 -0
  49. package/dist/commands/functions/deploy.js.map +1 -0
  50. package/dist/commands/functions/index.d.ts +3 -0
  51. package/dist/commands/functions/index.d.ts.map +1 -0
  52. package/dist/commands/functions/index.js +15 -0
  53. package/dist/commands/functions/index.js.map +1 -0
  54. package/dist/commands/functions/list.d.ts +6 -0
  55. package/dist/commands/functions/list.d.ts.map +1 -0
  56. package/dist/commands/functions/list.js +63 -0
  57. package/dist/commands/functions/list.js.map +1 -0
  58. package/dist/commands/functions/new.d.ts +3 -0
  59. package/dist/commands/functions/new.d.ts.map +1 -0
  60. package/dist/commands/functions/new.js +57 -0
  61. package/dist/commands/functions/new.js.map +1 -0
  62. package/dist/commands/gen/index.d.ts +3 -0
  63. package/dist/commands/gen/index.d.ts.map +1 -0
  64. package/dist/commands/gen/index.js +320 -0
  65. package/dist/commands/gen/index.js.map +1 -0
  66. package/dist/commands/instance/index.d.ts +8 -0
  67. package/dist/commands/instance/index.d.ts.map +1 -0
  68. package/dist/commands/instance/index.js +361 -0
  69. package/dist/commands/instance/index.js.map +1 -0
  70. package/dist/commands/login/index.d.ts +3 -0
  71. package/dist/commands/login/index.d.ts.map +1 -0
  72. package/dist/commands/login/index.js +185 -0
  73. package/dist/commands/login/index.js.map +1 -0
  74. package/dist/commands/login/login.d.ts +3 -0
  75. package/dist/commands/login/login.d.ts.map +1 -0
  76. package/dist/commands/login/login.js +185 -0
  77. package/dist/commands/login/login.js.map +1 -0
  78. package/dist/commands/logout/index.d.ts +3 -0
  79. package/dist/commands/logout/index.d.ts.map +1 -0
  80. package/dist/commands/logout/index.js +41 -0
  81. package/dist/commands/logout/index.js.map +1 -0
  82. package/dist/commands/profile/import-env.d.ts +13 -0
  83. package/dist/commands/profile/import-env.d.ts.map +1 -0
  84. package/dist/commands/profile/import-env.js +81 -0
  85. package/dist/commands/profile/import-env.js.map +1 -0
  86. package/dist/commands/profile/index.d.ts +3 -0
  87. package/dist/commands/profile/index.d.ts.map +1 -0
  88. package/dist/commands/profile/index.js +109 -0
  89. package/dist/commands/profile/index.js.map +1 -0
  90. package/dist/commands/rest/index.d.ts +3 -0
  91. package/dist/commands/rest/index.d.ts.map +1 -0
  92. package/dist/commands/rest/index.js +102 -0
  93. package/dist/commands/rest/index.js.map +1 -0
  94. package/dist/commands/skill/index.d.ts +11 -0
  95. package/dist/commands/skill/index.d.ts.map +1 -0
  96. package/dist/commands/skill/index.js +153 -0
  97. package/dist/commands/skill/index.js.map +1 -0
  98. package/dist/commands/status/index.d.ts +3 -0
  99. package/dist/commands/status/index.d.ts.map +1 -0
  100. package/dist/commands/status/index.js +59 -0
  101. package/dist/commands/status/index.js.map +1 -0
  102. package/dist/commands/storage/index.d.ts +3 -0
  103. package/dist/commands/storage/index.d.ts.map +1 -0
  104. package/dist/commands/storage/index.js +198 -0
  105. package/dist/commands/storage/index.js.map +1 -0
  106. package/dist/commands/whoami/index.d.ts +3 -0
  107. package/dist/commands/whoami/index.d.ts.map +1 -0
  108. package/dist/commands/whoami/index.js +82 -0
  109. package/dist/commands/whoami/index.js.map +1 -0
  110. package/dist/credentials/commit.d.ts +38 -0
  111. package/dist/credentials/commit.d.ts.map +1 -0
  112. package/dist/credentials/commit.js +57 -0
  113. package/dist/credentials/commit.js.map +1 -0
  114. package/dist/credentials/credential-store.d.ts +57 -0
  115. package/dist/credentials/credential-store.d.ts.map +1 -0
  116. package/dist/credentials/credential-store.js +180 -0
  117. package/dist/credentials/credential-store.js.map +1 -0
  118. package/dist/credentials/env-file.d.ts +44 -0
  119. package/dist/credentials/env-file.d.ts.map +1 -0
  120. package/dist/credentials/env-file.js +118 -0
  121. package/dist/credentials/env-file.js.map +1 -0
  122. package/dist/credentials/formatter.d.ts +39 -0
  123. package/dist/credentials/formatter.d.ts.map +1 -0
  124. package/dist/credentials/formatter.js +79 -0
  125. package/dist/credentials/formatter.js.map +1 -0
  126. package/dist/credentials/index.d.ts +11 -0
  127. package/dist/credentials/index.d.ts.map +1 -0
  128. package/dist/credentials/index.js +11 -0
  129. package/dist/credentials/index.js.map +1 -0
  130. package/dist/credentials/jwt-introspect.d.ts +32 -0
  131. package/dist/credentials/jwt-introspect.d.ts.map +1 -0
  132. package/dist/credentials/jwt-introspect.js +64 -0
  133. package/dist/credentials/jwt-introspect.js.map +1 -0
  134. package/dist/credentials/masker.d.ts +20 -0
  135. package/dist/credentials/masker.d.ts.map +1 -0
  136. package/dist/credentials/masker.js +37 -0
  137. package/dist/credentials/masker.js.map +1 -0
  138. package/dist/credentials/profile.d.ts +83 -0
  139. package/dist/credentials/profile.d.ts.map +1 -0
  140. package/dist/credentials/profile.js +184 -0
  141. package/dist/credentials/profile.js.map +1 -0
  142. package/dist/credentials/tenant-guard.d.ts +16 -0
  143. package/dist/credentials/tenant-guard.d.ts.map +1 -0
  144. package/dist/credentials/tenant-guard.js +53 -0
  145. package/dist/credentials/tenant-guard.js.map +1 -0
  146. package/dist/credentials/tty-guard.d.ts +19 -0
  147. package/dist/credentials/tty-guard.d.ts.map +1 -0
  148. package/dist/credentials/tty-guard.js +47 -0
  149. package/dist/credentials/tty-guard.js.map +1 -0
  150. package/dist/db/apply-schema.d.ts +57 -0
  151. package/dist/db/apply-schema.d.ts.map +1 -0
  152. package/dist/db/apply-schema.js +192 -0
  153. package/dist/db/apply-schema.js.map +1 -0
  154. package/dist/db/sql-file.d.ts +49 -0
  155. package/dist/db/sql-file.d.ts.map +1 -0
  156. package/dist/db/sql-file.js +167 -0
  157. package/dist/db/sql-file.js.map +1 -0
  158. package/dist/instance/provision.d.ts +89 -0
  159. package/dist/instance/provision.d.ts.map +1 -0
  160. package/dist/instance/provision.js +139 -0
  161. package/dist/instance/provision.js.map +1 -0
  162. package/dist/instance/zero-store.d.ts +47 -0
  163. package/dist/instance/zero-store.d.ts.map +1 -0
  164. package/dist/instance/zero-store.js +91 -0
  165. package/dist/instance/zero-store.js.map +1 -0
  166. package/dist/main.d.ts +3 -0
  167. package/dist/main.d.ts.map +1 -0
  168. package/dist/main.js +46 -0
  169. package/dist/main.js.map +1 -0
  170. package/dist/skill/assets.d.ts +38 -0
  171. package/dist/skill/assets.d.ts.map +1 -0
  172. package/dist/skill/assets.js +111 -0
  173. package/dist/skill/assets.js.map +1 -0
  174. package/dist/skill/hint.d.ts +39 -0
  175. package/dist/skill/hint.d.ts.map +1 -0
  176. package/dist/skill/hint.js +109 -0
  177. package/dist/skill/hint.js.map +1 -0
  178. package/dist/skill/hosts.d.ts +21 -0
  179. package/dist/skill/hosts.d.ts.map +1 -0
  180. package/dist/skill/hosts.js +38 -0
  181. package/dist/skill/hosts.js.map +1 -0
  182. package/dist/skill/installer.d.ts +88 -0
  183. package/dist/skill/installer.d.ts.map +1 -0
  184. package/dist/skill/installer.js +203 -0
  185. package/dist/skill/installer.js.map +1 -0
  186. package/dist/skill/ownership.d.ts +35 -0
  187. package/dist/skill/ownership.d.ts.map +1 -0
  188. package/dist/skill/ownership.js +52 -0
  189. package/dist/skill/ownership.js.map +1 -0
  190. package/package.json +63 -3
  191. package/skills/pxbaas-app-spec/SKILL.md +163 -0
  192. package/skills/pxbaas-app-spec/references/deploy-options.md +157 -0
  193. package/skills/pxbaas-app-spec/references/guardrails-pitfalls.md +89 -0
  194. package/skills/pxbaas-app-spec/references/runtime-contract.md +151 -0
  195. package/skills/pxbaas-app-spec/references/ssr-session.md +121 -0
  196. package/skills/pxbaas-app-spec/references/templates-examples.md +308 -0
  197. package/skills/pxbaas-cli/SKILL.md +168 -0
  198. package/skills/pxbaas-cli/references/api-reference.md +68 -0
  199. package/skills/pxbaas-cli/references/app-deploy.md +143 -0
  200. package/skills/pxbaas-cli/references/auth-and-credentials.md +88 -0
  201. package/skills/pxbaas-cli/references/data-postgrest.md +85 -0
  202. package/skills/pxbaas-cli/references/db-and-meta.md +85 -0
  203. package/skills/pxbaas-cli/references/edge-functions.md +71 -0
  204. package/skills/pxbaas-cli/references/multi-tenant-apps.md +107 -0
  205. package/skills/pxbaas-cli/references/provision.md +86 -0
  206. package/skills/pxbaas-cli/references/safety-and-two-phase.md +49 -0
  207. package/skills/pxbaas-cli/references/storage.md +61 -0
  208. package/skills/pxbaas-cli/references/troubleshooting.md +73 -0
  209. package/templates/webapp/api/index.ts +55 -0
  210. package/templates/webapp/csr-bff/README.md +81 -0
  211. package/templates/webapp/csr-bff/backend/index.ts +168 -0
  212. package/templates/webapp/csr-bff/db/schema.sql +69 -0
  213. package/templates/webapp/csr-bff/frontend/dist/admin.html +101 -0
  214. package/templates/webapp/csr-bff/frontend/dist/article.html +44 -0
  215. package/templates/webapp/csr-bff/frontend/dist/blog.js +206 -0
  216. package/templates/webapp/csr-bff/frontend/dist/blogger.html +53 -0
  217. package/templates/webapp/csr-bff/frontend/dist/index.html +70 -0
  218. package/templates/webapp/csr-bff/frontend/dist/login.html +56 -0
  219. package/templates/webapp/csr-bff/frontend/dist/profile.html +59 -0
  220. package/templates/webapp/csr-bff/frontend/dist/signup.html +78 -0
  221. package/templates/webapp/csr-bff/frontend/dist/style.css +27 -0
  222. package/templates/webapp/manifest.json +296 -0
  223. package/templates/webapp/mpa/about.html +29 -0
  224. package/templates/webapp/mpa/app.js +42 -0
  225. package/templates/webapp/mpa/index.html +42 -0
  226. package/templates/webapp/mpa/index.ts +60 -0
  227. package/templates/webapp/mpa/style.css +42 -0
  228. package/templates/webapp/react-vite/frontend/index.html +12 -0
  229. package/templates/webapp/react-vite/frontend/package-lock.json +1826 -0
  230. package/templates/webapp/react-vite/frontend/package.json +23 -0
  231. package/templates/webapp/react-vite/frontend/src/App.tsx +34 -0
  232. package/templates/webapp/react-vite/frontend/src/main.tsx +13 -0
  233. package/templates/webapp/react-vite/frontend/src/style.css +46 -0
  234. package/templates/webapp/react-vite/frontend/tsconfig.json +20 -0
  235. package/templates/webapp/react-vite/frontend/vite.config.ts +10 -0
  236. package/templates/webapp/react-vite-hono/backend/index.ts +21 -0
  237. package/templates/webapp/react-vite-hono/frontend/index.html +12 -0
  238. package/templates/webapp/react-vite-hono/frontend/package-lock.json +1826 -0
  239. package/templates/webapp/react-vite-hono/frontend/package.json +23 -0
  240. package/templates/webapp/react-vite-hono/frontend/src/App.tsx +47 -0
  241. package/templates/webapp/react-vite-hono/frontend/src/main.tsx +13 -0
  242. package/templates/webapp/react-vite-hono/frontend/src/style.css +66 -0
  243. package/templates/webapp/react-vite-hono/frontend/tsconfig.json +20 -0
  244. package/templates/webapp/react-vite-hono/frontend/vite.config.ts +10 -0
  245. package/templates/webapp/spa/index.ts +119 -0
  246. package/templates/webapp/ssr-auth/backend/index.ts +133 -0
  247. package/templates/webapp/ssr-auth/frontend/dist/index.html +15 -0
  248. package/templates/webapp/ssr-blog/README.md +111 -0
  249. package/templates/webapp/ssr-blog/backend/index.ts +764 -0
  250. package/templates/webapp/ssr-blog/db/schema.sql +71 -0
  251. package/templates/webapp/ssr-blog/frontend/dist/index.html +39 -0
  252. package/templates/webapp/ssr-frameworks/README.md +64 -0
  253. package/templates/webapp/ssr-frameworks/backend/index.ts +241 -0
  254. package/templates/webapp/ssr-frameworks/frontend/dist/index.html +31 -0
  255. package/templates/webapp/ssr-hono/backend/index.ts +92 -0
  256. package/templates/webapp/ssr-hono/frontend/dist/index.html +12 -0
  257. package/templates/webapp/ssr-shop/README.md +80 -0
  258. package/templates/webapp/ssr-shop/backend/index.ts +491 -0
  259. package/templates/webapp/ssr-shop/db/schema.sql +120 -0
  260. package/templates/webapp/ssr-shop/frontend/dist/index.html +12 -0
  261. package/templates/webapp/vanilla-static/frontend/app.js +6 -0
  262. package/templates/webapp/vanilla-static/frontend/index.html +19 -0
  263. package/templates/webapp/vanilla-static/frontend/style.css +43 -0
  264. package/README.md +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4HzD;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACzC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAyOD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,EACD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -0,0 +1,355 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { MetaDriver } from '@polardbx/pxbaas-client';
4
+ import { CredentialStore, ProfileManager, formatSuccess, formatError, formatWarning, } from '../../credentials/index.js';
5
+ import { applySqlStatements, getSingleTenantMetaDriver, } from '../../db/apply-schema.js';
6
+ export function registerDbCommands(program) {
7
+ const db = program
8
+ .command('db')
9
+ .description('Database operations (query, schema inspection, DDL)');
10
+ db
11
+ .command('query <sql>')
12
+ .description('Execute SQL query via Meta API')
13
+ .option('--role <role>', 'Role to use (anon or service_role)', 'anon')
14
+ .option('--json', 'Output in JSON format')
15
+ .action(async (sql, options) => {
16
+ try {
17
+ await handleDbQuery(sql, options, program);
18
+ }
19
+ catch (error) {
20
+ const message = error instanceof Error ? error.message : String(error);
21
+ console.error(formatError(message));
22
+ process.exit(1);
23
+ }
24
+ });
25
+ db
26
+ .command('tables')
27
+ .description('List tables in current tenant database')
28
+ .option('--schema <schema>', 'Schema name', 'public')
29
+ .option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
30
+ .option('--json', 'Output in JSON format')
31
+ .action(async (options) => {
32
+ try {
33
+ await handleDbTables(options, program);
34
+ }
35
+ catch (error) {
36
+ const message = error instanceof Error ? error.message : String(error);
37
+ console.error(formatError(message));
38
+ process.exit(1);
39
+ }
40
+ });
41
+ db
42
+ .command('schema <table>')
43
+ .description('Show table schema (columns, indexes)')
44
+ .option('--schema <schema>', 'Schema name', 'public')
45
+ .option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
46
+ .option('--json', 'Output in JSON format')
47
+ .action(async (table, options) => {
48
+ try {
49
+ await handleDbSchema(table, options, program);
50
+ }
51
+ catch (error) {
52
+ const message = error instanceof Error ? error.message : String(error);
53
+ console.error(formatError(message));
54
+ process.exit(1);
55
+ }
56
+ });
57
+ db
58
+ .command('create-table <name>')
59
+ .description('Create a new table (requires service_role, two-phase confirmation)')
60
+ .option('--columns <json>', 'Column definitions (JSON array)')
61
+ .option('--schema <schema>', 'Schema name', 'public')
62
+ .option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
63
+ .option('--json', 'Output in JSON format')
64
+ .action(async (name, options) => {
65
+ try {
66
+ await handleDbCreateTable(name, options, program);
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : String(error);
70
+ console.error(formatError(message));
71
+ process.exit(1);
72
+ }
73
+ });
74
+ db
75
+ .command('add-column <table> <column>')
76
+ .description('Add a column to a table (requires service_role, two-phase confirmation)')
77
+ .option('--type <type>', 'Column data type', 'text')
78
+ .option('--nullable', 'Allow NULL values', true)
79
+ .option('--default <value>', 'Default value')
80
+ .option('--schema <schema>', 'Schema name', 'public')
81
+ .option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
82
+ .option('--json', 'Output in JSON format')
83
+ .action(async (table, column, options) => {
84
+ try {
85
+ await handleDbAddColumn(table, column, options, program);
86
+ }
87
+ catch (error) {
88
+ const message = error instanceof Error ? error.message : String(error);
89
+ console.error(formatError(message));
90
+ process.exit(1);
91
+ }
92
+ });
93
+ db
94
+ .command('push <file>')
95
+ .description('Apply a SQL file (DDL + RLS + seed) to the single-tenant database. Shows the plan and requires authorization.')
96
+ .option('--schema <schema>', 'Target schema for the __SCHEMA__ placeholder', 'public')
97
+ .option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
98
+ .option('--dry-run', 'Show the statements without executing them')
99
+ .option('--yes', 'Authorize non-interactively (skip the confirm prompt)')
100
+ .option('--json', 'Output in JSON format')
101
+ .action(async (file, options) => {
102
+ try {
103
+ await handleDbPush(file, options, program);
104
+ }
105
+ catch (error) {
106
+ const message = error instanceof Error ? error.message : String(error);
107
+ if (options.json || program.opts().json) {
108
+ console.log(JSON.stringify({ code: 'DB_PUSH_FAILED', message }, null, 2));
109
+ }
110
+ else {
111
+ console.error(formatError(message));
112
+ }
113
+ process.exit(1);
114
+ }
115
+ });
116
+ }
117
+ export async function handleDbQuery(sql, options, program) {
118
+ const profileManager = new ProfileManager();
119
+ const currentProfile = await profileManager.getCurrentProfile();
120
+ if (!currentProfile) {
121
+ throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
122
+ }
123
+ const credentialStore = new CredentialStore();
124
+ const credentials = await credentialStore.getCredentials(currentProfile.name);
125
+ if (!credentials) {
126
+ throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
127
+ }
128
+ const useServiceRole = options.role === 'service_role';
129
+ const metaDriver = new MetaDriver({
130
+ endpoint: currentProfile.endpoint,
131
+ anonKey: credentials.anonKey,
132
+ serviceRoleKey: credentials.serviceRoleKey,
133
+ tenantId: currentProfile.tenantId,
134
+ });
135
+ const result = await metaDriver.query(sql, useServiceRole);
136
+ if (options.json || program.opts().json) {
137
+ console.log(JSON.stringify(result, null, 2));
138
+ }
139
+ else {
140
+ if (result.rows.length === 0) {
141
+ console.log('Query executed successfully, no rows returned.');
142
+ }
143
+ else {
144
+ console.log(formatSuccess(`Query returned ${result.rows.length} row(s):`));
145
+ // Simple table display
146
+ const columns = Object.keys(result.rows[0]);
147
+ console.log(columns.join('\t'));
148
+ console.log(columns.map(() => '---').join('\t'));
149
+ for (const row of result.rows) {
150
+ const values = columns.map(col => String(row[col] ?? ''));
151
+ console.log(values.join('\t'));
152
+ }
153
+ }
154
+ }
155
+ }
156
+ async function handleDbTables(options, program) {
157
+ const profileManager = new ProfileManager();
158
+ const currentProfile = await profileManager.getCurrentProfile();
159
+ if (!currentProfile) {
160
+ throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
161
+ }
162
+ const credentialStore = new CredentialStore();
163
+ const credentials = await credentialStore.getCredentials(currentProfile.name);
164
+ if (!credentials) {
165
+ throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
166
+ }
167
+ const useServiceRole = options.role === 'service_role';
168
+ const metaDriver = new MetaDriver({
169
+ endpoint: currentProfile.endpoint,
170
+ anonKey: credentials.anonKey,
171
+ serviceRoleKey: credentials.serviceRoleKey,
172
+ tenantId: currentProfile.tenantId,
173
+ });
174
+ const allTables = await metaDriver.listTables(useServiceRole);
175
+ // Filter by schema
176
+ const tables = allTables.filter(t => t.schema === options.schema);
177
+ if (options.json || program.opts().json) {
178
+ console.log(JSON.stringify({ schema: options.schema, tables }, null, 2));
179
+ }
180
+ else {
181
+ if (tables.length === 0) {
182
+ console.log(`No tables found in schema "${options.schema}".`);
183
+ }
184
+ else {
185
+ console.log(formatSuccess(`Found ${tables.length} table(s) in schema "${options.schema}":`));
186
+ console.log('');
187
+ for (const table of tables) {
188
+ console.log(` ${table.name}`);
189
+ }
190
+ }
191
+ }
192
+ }
193
+ async function handleDbSchema(table, options, program) {
194
+ const profileManager = new ProfileManager();
195
+ const currentProfile = await profileManager.getCurrentProfile();
196
+ if (!currentProfile) {
197
+ throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
198
+ }
199
+ const credentialStore = new CredentialStore();
200
+ const credentials = await credentialStore.getCredentials(currentProfile.name);
201
+ if (!credentials) {
202
+ throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
203
+ }
204
+ const useServiceRole = options.role === 'service_role';
205
+ const metaDriver = new MetaDriver({
206
+ endpoint: currentProfile.endpoint,
207
+ anonKey: credentials.anonKey,
208
+ serviceRoleKey: credentials.serviceRoleKey,
209
+ tenantId: currentProfile.tenantId,
210
+ });
211
+ const [columns, indexes] = await Promise.all([
212
+ metaDriver.getTableColumns(table, options.schema, useServiceRole),
213
+ metaDriver.getTableIndexes(table, options.schema, useServiceRole),
214
+ ]);
215
+ if (options.json || program.opts().json) {
216
+ console.log(JSON.stringify({ table, schema: options.schema, columns, indexes }, null, 2));
217
+ }
218
+ else {
219
+ console.log(formatSuccess(`Schema for table "${options.schema}.${table}"`));
220
+ console.log('\nColumns:');
221
+ console.log('Name\tType\tNullable\tDefault\tPrimary Key\tComment');
222
+ console.log('---\t---\t---\t---\t---\t---');
223
+ for (const col of columns) {
224
+ const nullable = col.isNullable ? 'YES' : 'NO';
225
+ const defaultValue = col.defaultValue ?? '';
226
+ const isPk = col.isPrimaryKey ? 'YES' : 'NO';
227
+ const comment = col.comment ?? '';
228
+ console.log(`${col.name}\t${col.dataType}\t${nullable}\t${defaultValue}\t${isPk}\t${comment}`);
229
+ }
230
+ if (indexes.length > 0) {
231
+ console.log('\nIndexes:');
232
+ console.log('Name\tColumns\tUnique\tPrimary\tType');
233
+ console.log('---\t---\t---\t---\t---');
234
+ for (const idx of indexes) {
235
+ const cols = idx.columns.join(', ');
236
+ const unique = idx.isUnique ? 'YES' : 'NO';
237
+ const primary = idx.isPrimary ? 'YES' : 'NO';
238
+ console.log(`${idx.name}\t${cols}\t${unique}\t${primary}\t${idx.type}`);
239
+ }
240
+ }
241
+ }
242
+ }
243
+ async function handleDbCreateTable(name, options, program) {
244
+ const profileManager = new ProfileManager();
245
+ const currentProfile = await profileManager.getCurrentProfile();
246
+ if (!currentProfile) {
247
+ throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
248
+ }
249
+ const credentialStore = new CredentialStore();
250
+ const credentials = await credentialStore.getCredentials(currentProfile.name);
251
+ if (!credentials) {
252
+ throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
253
+ }
254
+ // Parse columns if provided
255
+ let columnDefs = [];
256
+ if (options.columns) {
257
+ try {
258
+ columnDefs = JSON.parse(options.columns);
259
+ }
260
+ catch {
261
+ throw new Error('Invalid JSON in --columns. Expected format: [{"name":"id","type":"bigint","primaryKey":true},...]');
262
+ }
263
+ }
264
+ else {
265
+ // Default: create table with id column
266
+ columnDefs = [
267
+ { name: 'id', type: 'bigint', nullable: false, primaryKey: true },
268
+ { name: 'created_at', type: 'timestamp', nullable: false },
269
+ ];
270
+ }
271
+ // Build SQL
272
+ const columnSql = columnDefs.map(col => {
273
+ let sql = `${col.name} ${col.type}`;
274
+ if (col.primaryKey)
275
+ sql += ' PRIMARY KEY';
276
+ if (col.nullable === false)
277
+ sql += ' NOT NULL';
278
+ return sql;
279
+ }).join(', ');
280
+ const sql = `CREATE TABLE ${options.schema}.${name} (${columnSql})`;
281
+ const useServiceRole = options.role === 'service_role';
282
+ const metaDriver = new MetaDriver({
283
+ endpoint: currentProfile.endpoint,
284
+ anonKey: credentials.anonKey,
285
+ serviceRoleKey: credentials.serviceRoleKey,
286
+ tenantId: currentProfile.tenantId,
287
+ });
288
+ const result = await metaDriver.query(sql, useServiceRole);
289
+ if (options.json || program.opts().json) {
290
+ console.log(JSON.stringify({ table: name, schema: options.schema, sql, result }, null, 2));
291
+ }
292
+ else {
293
+ console.log(formatSuccess(`Created table "${options.schema}.${name}"`));
294
+ console.log(` SQL: ${sql}`);
295
+ }
296
+ }
297
+ async function handleDbAddColumn(table, column, options, program) {
298
+ const profileManager = new ProfileManager();
299
+ const currentProfile = await profileManager.getCurrentProfile();
300
+ if (!currentProfile) {
301
+ throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
302
+ }
303
+ const credentialStore = new CredentialStore();
304
+ const credentials = await credentialStore.getCredentials(currentProfile.name);
305
+ if (!credentials) {
306
+ throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
307
+ }
308
+ // Build SQL
309
+ let sql = `ALTER TABLE ${options.schema}.${table} ADD COLUMN ${column} ${options.type}`;
310
+ if (!options.nullable) {
311
+ sql += ' NOT NULL';
312
+ }
313
+ if (options.default !== undefined) {
314
+ sql += ` DEFAULT ${options.default}`;
315
+ }
316
+ const useServiceRole = options.role === 'service_role';
317
+ const metaDriver = new MetaDriver({
318
+ endpoint: currentProfile.endpoint,
319
+ anonKey: credentials.anonKey,
320
+ serviceRoleKey: credentials.serviceRoleKey,
321
+ tenantId: currentProfile.tenantId,
322
+ });
323
+ const result = await metaDriver.query(sql, useServiceRole);
324
+ if (options.json || program.opts().json) {
325
+ console.log(JSON.stringify({ table, column, schema: options.schema, sql, result }, null, 2));
326
+ }
327
+ else {
328
+ console.log(formatSuccess(`Added column "${column}" to table "${options.schema}.${table}"`));
329
+ console.log(` SQL: ${sql}`);
330
+ }
331
+ }
332
+ export async function handleDbPush(file, options, program) {
333
+ if (!existsSync(file)) {
334
+ throw new Error(`SQL file not found: ${file}`);
335
+ }
336
+ const raw = await readFile(file, 'utf8');
337
+ const json = Boolean(options.json || program.opts().json);
338
+ // Single-tenant only; getSingleTenantMetaDriver rejects multi-tenant profiles.
339
+ const { driver, useServiceRole } = await getSingleTenantMetaDriver(options.role === 'anon' ? 'anon' : 'service_role');
340
+ const result = await applySqlStatements(raw, file, {
341
+ schema: options.schema,
342
+ dryRun: Boolean(options.dryRun),
343
+ assumeYes: Boolean(options.yes),
344
+ json,
345
+ }, (sql) => driver.query(sql, useServiceRole));
346
+ if (json) {
347
+ console.log(JSON.stringify(result, null, 2));
348
+ }
349
+ else if (result.total === 0) {
350
+ console.log(formatWarning(`Nothing to apply from ${file}.`));
351
+ }
352
+ if (result.failed > 0)
353
+ process.exit(1);
354
+ }
355
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/db/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerDoctorCommand(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa5D"}