@polardbx/pxbaas 0.0.0-stage → 0.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +223 -2
- package/bin/pxbaas.js +13 -0
- package/dist/app/local-index.d.ts +70 -0
- package/dist/app/local-index.d.ts.map +1 -0
- package/dist/app/local-index.js +140 -0
- package/dist/app/local-index.js.map +1 -0
- package/dist/app/preflight.d.ts +61 -0
- package/dist/app/preflight.d.ts.map +1 -0
- package/dist/app/preflight.js +115 -0
- package/dist/app/preflight.js.map +1 -0
- package/dist/app/spec-lint.d.ts +45 -0
- package/dist/app/spec-lint.d.ts.map +1 -0
- package/dist/app/spec-lint.js +423 -0
- package/dist/app/spec-lint.js.map +1 -0
- package/dist/app/templates.d.ts +167 -0
- package/dist/app/templates.d.ts.map +1 -0
- package/dist/app/templates.js +151 -0
- package/dist/app/templates.js.map +1 -0
- package/dist/cli/help-guides.d.ts +17 -0
- package/dist/cli/help-guides.d.ts.map +1 -0
- package/dist/cli/help-guides.js +132 -0
- package/dist/cli/help-guides.js.map +1 -0
- package/dist/cli/root.d.ts +3 -0
- package/dist/cli/root.d.ts.map +1 -0
- package/dist/cli/root.js +75 -0
- package/dist/cli/root.js.map +1 -0
- package/dist/commands/app/index.d.ts +8 -0
- package/dist/commands/app/index.d.ts.map +1 -0
- package/dist/commands/app/index.js +1907 -0
- package/dist/commands/app/index.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +198 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/completion/index.d.ts +3 -0
- package/dist/commands/completion/index.d.ts.map +1 -0
- package/dist/commands/completion/index.js +14 -0
- package/dist/commands/completion/index.js.map +1 -0
- package/dist/commands/data/index.d.ts +55 -0
- package/dist/commands/data/index.d.ts.map +1 -0
- package/dist/commands/data/index.js +407 -0
- package/dist/commands/data/index.js.map +1 -0
- package/dist/commands/db/index.d.ts +29 -0
- package/dist/commands/db/index.d.ts.map +1 -0
- package/dist/commands/db/index.js +500 -0
- package/dist/commands/db/index.js.map +1 -0
- package/dist/commands/doctor/index.d.ts +3 -0
- package/dist/commands/doctor/index.d.ts.map +1 -0
- package/dist/commands/doctor/index.js +305 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/functions/delete.d.ts +3 -0
- package/dist/commands/functions/delete.d.ts.map +1 -0
- package/dist/commands/functions/delete.js +55 -0
- package/dist/commands/functions/delete.js.map +1 -0
- package/dist/commands/functions/deploy.d.ts +3 -0
- package/dist/commands/functions/deploy.d.ts.map +1 -0
- package/dist/commands/functions/deploy.js +118 -0
- package/dist/commands/functions/deploy.js.map +1 -0
- package/dist/commands/functions/index.d.ts +3 -0
- package/dist/commands/functions/index.d.ts.map +1 -0
- package/dist/commands/functions/index.js +15 -0
- package/dist/commands/functions/index.js.map +1 -0
- package/dist/commands/functions/list.d.ts +6 -0
- package/dist/commands/functions/list.d.ts.map +1 -0
- package/dist/commands/functions/list.js +63 -0
- package/dist/commands/functions/list.js.map +1 -0
- package/dist/commands/functions/new.d.ts +7 -0
- package/dist/commands/functions/new.d.ts.map +1 -0
- package/dist/commands/functions/new.js +72 -0
- package/dist/commands/functions/new.js.map +1 -0
- package/dist/commands/gen/index.d.ts +3 -0
- package/dist/commands/gen/index.d.ts.map +1 -0
- package/dist/commands/gen/index.js +323 -0
- package/dist/commands/gen/index.js.map +1 -0
- package/dist/commands/guide/index.d.ts +8 -0
- package/dist/commands/guide/index.d.ts.map +1 -0
- package/dist/commands/guide/index.js +20 -0
- package/dist/commands/guide/index.js.map +1 -0
- package/dist/commands/instance/index.d.ts +8 -0
- package/dist/commands/instance/index.d.ts.map +1 -0
- package/dist/commands/instance/index.js +481 -0
- package/dist/commands/instance/index.js.map +1 -0
- package/dist/commands/login/index.d.ts +3 -0
- package/dist/commands/login/index.d.ts.map +1 -0
- package/dist/commands/login/index.js +145 -0
- package/dist/commands/login/index.js.map +1 -0
- package/dist/commands/logout/index.d.ts +3 -0
- package/dist/commands/logout/index.d.ts.map +1 -0
- package/dist/commands/logout/index.js +41 -0
- package/dist/commands/logout/index.js.map +1 -0
- package/dist/commands/profile/import-env.d.ts +18 -0
- package/dist/commands/profile/import-env.d.ts.map +1 -0
- package/dist/commands/profile/import-env.js +206 -0
- package/dist/commands/profile/import-env.js.map +1 -0
- package/dist/commands/profile/index.d.ts +3 -0
- package/dist/commands/profile/index.d.ts.map +1 -0
- package/dist/commands/profile/index.js +124 -0
- package/dist/commands/profile/index.js.map +1 -0
- package/dist/commands/rest/index.d.ts +3 -0
- package/dist/commands/rest/index.d.ts.map +1 -0
- package/dist/commands/rest/index.js +102 -0
- package/dist/commands/rest/index.js.map +1 -0
- package/dist/commands/skill/index.d.ts +11 -0
- package/dist/commands/skill/index.d.ts.map +1 -0
- package/dist/commands/skill/index.js +228 -0
- package/dist/commands/skill/index.js.map +1 -0
- package/dist/commands/status/index.d.ts +3 -0
- package/dist/commands/status/index.d.ts.map +1 -0
- package/dist/commands/status/index.js +59 -0
- package/dist/commands/status/index.js.map +1 -0
- package/dist/commands/storage/index.d.ts +3 -0
- package/dist/commands/storage/index.d.ts.map +1 -0
- package/dist/commands/storage/index.js +400 -0
- package/dist/commands/storage/index.js.map +1 -0
- package/dist/commands/tenant/index.d.ts +19 -0
- package/dist/commands/tenant/index.d.ts.map +1 -0
- package/dist/commands/tenant/index.js +667 -0
- package/dist/commands/tenant/index.js.map +1 -0
- package/dist/commands/whoami/index.d.ts +3 -0
- package/dist/commands/whoami/index.d.ts.map +1 -0
- package/dist/commands/whoami/index.js +101 -0
- package/dist/commands/whoami/index.js.map +1 -0
- package/dist/credentials/commit.d.ts +38 -0
- package/dist/credentials/commit.d.ts.map +1 -0
- package/dist/credentials/commit.js +57 -0
- package/dist/credentials/commit.js.map +1 -0
- package/dist/credentials/credential-store.d.ts +86 -0
- package/dist/credentials/credential-store.d.ts.map +1 -0
- package/dist/credentials/credential-store.js +282 -0
- package/dist/credentials/credential-store.js.map +1 -0
- package/dist/credentials/env-file.d.ts +85 -0
- package/dist/credentials/env-file.d.ts.map +1 -0
- package/dist/credentials/env-file.js +193 -0
- package/dist/credentials/env-file.js.map +1 -0
- package/dist/credentials/formatter.d.ts +39 -0
- package/dist/credentials/formatter.d.ts.map +1 -0
- package/dist/credentials/formatter.js +79 -0
- package/dist/credentials/formatter.js.map +1 -0
- package/dist/credentials/index.d.ts +13 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +13 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/jwt-introspect.d.ts +39 -0
- package/dist/credentials/jwt-introspect.d.ts.map +1 -0
- package/dist/credentials/jwt-introspect.js +64 -0
- package/dist/credentials/jwt-introspect.js.map +1 -0
- package/dist/credentials/masker.d.ts +23 -0
- package/dist/credentials/masker.d.ts.map +1 -0
- package/dist/credentials/masker.js +40 -0
- package/dist/credentials/masker.js.map +1 -0
- package/dist/credentials/profile.d.ts +95 -0
- package/dist/credentials/profile.d.ts.map +1 -0
- package/dist/credentials/profile.js +207 -0
- package/dist/credentials/profile.js.map +1 -0
- package/dist/credentials/tenant-guard.d.ts +16 -0
- package/dist/credentials/tenant-guard.d.ts.map +1 -0
- package/dist/credentials/tenant-guard.js +53 -0
- package/dist/credentials/tenant-guard.js.map +1 -0
- package/dist/credentials/tty-guard.d.ts +29 -0
- package/dist/credentials/tty-guard.d.ts.map +1 -0
- package/dist/credentials/tty-guard.js +79 -0
- package/dist/credentials/tty-guard.js.map +1 -0
- package/dist/db/apply-schema.d.ts +144 -0
- package/dist/db/apply-schema.d.ts.map +1 -0
- package/dist/db/apply-schema.js +359 -0
- package/dist/db/apply-schema.js.map +1 -0
- package/dist/db/introspect.d.ts +54 -0
- package/dist/db/introspect.d.ts.map +1 -0
- package/dist/db/introspect.js +140 -0
- package/dist/db/introspect.js.map +1 -0
- package/dist/db/sql-file.d.ts +104 -0
- package/dist/db/sql-file.d.ts.map +1 -0
- package/dist/db/sql-file.js +584 -0
- package/dist/db/sql-file.js.map +1 -0
- package/dist/instance/provision.d.ts +89 -0
- package/dist/instance/provision.d.ts.map +1 -0
- package/dist/instance/provision.js +139 -0
- package/dist/instance/provision.js.map +1 -0
- package/dist/instance/zero-store.d.ts +47 -0
- package/dist/instance/zero-store.d.ts.map +1 -0
- package/dist/instance/zero-store.js +91 -0
- package/dist/instance/zero-store.js.map +1 -0
- package/dist/instance/zero-whitelist.d.ts +39 -0
- package/dist/instance/zero-whitelist.d.ts.map +1 -0
- package/dist/instance/zero-whitelist.js +67 -0
- package/dist/instance/zero-whitelist.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +69 -0
- package/dist/main.js.map +1 -0
- package/dist/skill/agents-md.d.ts +25 -0
- package/dist/skill/agents-md.d.ts.map +1 -0
- package/dist/skill/agents-md.js +62 -0
- package/dist/skill/agents-md.js.map +1 -0
- package/dist/skill/assets.d.ts +38 -0
- package/dist/skill/assets.d.ts.map +1 -0
- package/dist/skill/assets.js +111 -0
- package/dist/skill/assets.js.map +1 -0
- package/dist/skill/hint.d.ts +39 -0
- package/dist/skill/hint.d.ts.map +1 -0
- package/dist/skill/hint.js +109 -0
- package/dist/skill/hint.js.map +1 -0
- package/dist/skill/hosts.d.ts +45 -0
- package/dist/skill/hosts.d.ts.map +1 -0
- package/dist/skill/hosts.js +96 -0
- package/dist/skill/hosts.js.map +1 -0
- package/dist/skill/installer.d.ts +100 -0
- package/dist/skill/installer.d.ts.map +1 -0
- package/dist/skill/installer.js +241 -0
- package/dist/skill/installer.js.map +1 -0
- package/dist/skill/ownership.d.ts +35 -0
- package/dist/skill/ownership.d.ts.map +1 -0
- package/dist/skill/ownership.js +52 -0
- package/dist/skill/ownership.js.map +1 -0
- package/dist/tenant/bundle.d.ts +66 -0
- package/dist/tenant/bundle.d.ts.map +1 -0
- package/dist/tenant/bundle.js +132 -0
- package/dist/tenant/bundle.js.map +1 -0
- package/dist/tenant/guide.d.ts +50 -0
- package/dist/tenant/guide.d.ts.map +1 -0
- package/dist/tenant/guide.js +152 -0
- package/dist/tenant/guide.js.map +1 -0
- package/dist/tenant/probe.d.ts +65 -0
- package/dist/tenant/probe.d.ts.map +1 -0
- package/dist/tenant/probe.js +159 -0
- package/dist/tenant/probe.js.map +1 -0
- package/dist/tenant/verify.d.ts +37 -0
- package/dist/tenant/verify.d.ts.map +1 -0
- package/dist/tenant/verify.js +132 -0
- package/dist/tenant/verify.js.map +1 -0
- package/dist/version.d.ts +29 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +65 -0
- package/dist/version.js.map +1 -0
- package/package.json +63 -3
- package/skills/pxbaas-app-spec/SKILL.md +165 -0
- package/skills/pxbaas-app-spec/references/deploy-options.md +158 -0
- package/skills/pxbaas-app-spec/references/guardrails-pitfalls.md +89 -0
- package/skills/pxbaas-app-spec/references/runtime-contract.md +151 -0
- package/skills/pxbaas-app-spec/references/ssr-session.md +121 -0
- package/skills/pxbaas-app-spec/references/templates-examples.md +311 -0
- package/skills/pxbaas-cli/SKILL.md +186 -0
- package/skills/pxbaas-cli/references/api-reference.md +68 -0
- package/skills/pxbaas-cli/references/app-deploy.md +186 -0
- package/skills/pxbaas-cli/references/auth-and-credentials.md +116 -0
- package/skills/pxbaas-cli/references/data-postgrest.md +101 -0
- package/skills/pxbaas-cli/references/db-and-meta.md +102 -0
- package/skills/pxbaas-cli/references/edge-functions.md +71 -0
- package/skills/pxbaas-cli/references/multi-tenant-apps.md +138 -0
- package/skills/pxbaas-cli/references/provision.md +101 -0
- package/skills/pxbaas-cli/references/safety-and-two-phase.md +78 -0
- package/skills/pxbaas-cli/references/storage.md +61 -0
- package/skills/pxbaas-cli/references/tenant-admin.md +122 -0
- package/skills/pxbaas-cli/references/troubleshooting.md +76 -0
- package/templates/webapp/api/index.ts +55 -0
- package/templates/webapp/csr-bff/README.md +81 -0
- package/templates/webapp/csr-bff/backend/index.ts +168 -0
- package/templates/webapp/csr-bff/db/rls.json +13 -0
- package/templates/webapp/csr-bff/db/schema.sql +49 -0
- package/templates/webapp/csr-bff/frontend/dist/admin.html +101 -0
- package/templates/webapp/csr-bff/frontend/dist/article.html +44 -0
- package/templates/webapp/csr-bff/frontend/dist/blog.js +206 -0
- package/templates/webapp/csr-bff/frontend/dist/blogger.html +53 -0
- package/templates/webapp/csr-bff/frontend/dist/index.html +70 -0
- package/templates/webapp/csr-bff/frontend/dist/login.html +56 -0
- package/templates/webapp/csr-bff/frontend/dist/profile.html +59 -0
- package/templates/webapp/csr-bff/frontend/dist/signup.html +78 -0
- package/templates/webapp/csr-bff/frontend/dist/style.css +27 -0
- package/templates/webapp/manifest.json +419 -0
- package/templates/webapp/mpa/about.html +29 -0
- package/templates/webapp/mpa/app.js +42 -0
- package/templates/webapp/mpa/index.html +42 -0
- package/templates/webapp/mpa/index.ts +60 -0
- package/templates/webapp/mpa/style.css +42 -0
- package/templates/webapp/react-vite/frontend/index.html +12 -0
- package/templates/webapp/react-vite/frontend/package-lock.json +1826 -0
- package/templates/webapp/react-vite/frontend/package.json +23 -0
- package/templates/webapp/react-vite/frontend/src/App.tsx +34 -0
- package/templates/webapp/react-vite/frontend/src/main.tsx +13 -0
- package/templates/webapp/react-vite/frontend/src/style.css +46 -0
- package/templates/webapp/react-vite/frontend/tsconfig.json +20 -0
- package/templates/webapp/react-vite/frontend/vite.config.ts +10 -0
- package/templates/webapp/react-vite-hono/backend/index.ts +38 -0
- package/templates/webapp/react-vite-hono/frontend/index.html +12 -0
- package/templates/webapp/react-vite-hono/frontend/package-lock.json +1826 -0
- package/templates/webapp/react-vite-hono/frontend/package.json +23 -0
- package/templates/webapp/react-vite-hono/frontend/src/App.tsx +47 -0
- package/templates/webapp/react-vite-hono/frontend/src/main.tsx +13 -0
- package/templates/webapp/react-vite-hono/frontend/src/style.css +66 -0
- package/templates/webapp/react-vite-hono/frontend/tsconfig.json +20 -0
- package/templates/webapp/react-vite-hono/frontend/vite.config.ts +10 -0
- package/templates/webapp/spa/index.ts +119 -0
- package/templates/webapp/ssr-auth/backend/index.ts +133 -0
- package/templates/webapp/ssr-auth/frontend/dist/index.html +15 -0
- package/templates/webapp/ssr-blog/README.md +111 -0
- package/templates/webapp/ssr-blog/backend/index.ts +764 -0
- package/templates/webapp/ssr-blog/db/rls.json +13 -0
- package/templates/webapp/ssr-blog/db/schema.sql +51 -0
- package/templates/webapp/ssr-blog/frontend/dist/index.html +39 -0
- package/templates/webapp/ssr-frameworks/README.md +64 -0
- package/templates/webapp/ssr-frameworks/backend/index.ts +241 -0
- package/templates/webapp/ssr-frameworks/frontend/dist/index.html +31 -0
- package/templates/webapp/ssr-hono/backend/index.ts +111 -0
- package/templates/webapp/ssr-hono/frontend/dist/index.html +12 -0
- package/templates/webapp/ssr-shop/README.md +80 -0
- package/templates/webapp/ssr-shop/backend/index.ts +491 -0
- package/templates/webapp/ssr-shop/db/rls.json +16 -0
- package/templates/webapp/ssr-shop/db/schema.sql +90 -0
- package/templates/webapp/ssr-shop/frontend/dist/index.html +12 -0
- package/templates/webapp/vanilla-static/frontend/dist/app.js +6 -0
- package/templates/webapp/vanilla-static/frontend/dist/index.html +19 -0
- package/templates/webapp/vanilla-static/frontend/dist/style.css +43 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { MetaDriver, TenantDdlDriver } from '@polardbx/pxbaas-client';
|
|
4
|
+
import { CredentialStore, ProfileManager, formatSuccess, formatError, formatWarning, } from '../../credentials/index.js';
|
|
5
|
+
import { applySchema, getSchemaSink, } from '../../db/apply-schema.js';
|
|
6
|
+
import { makeIntrospector } from '../../db/introspect.js';
|
|
7
|
+
import { parseRlsJson } from '../../db/sql-file.js';
|
|
8
|
+
export function registerDbCommands(program) {
|
|
9
|
+
const db = program
|
|
10
|
+
.command('db')
|
|
11
|
+
.description('Database operations (query, schema inspection, DDL)');
|
|
12
|
+
db
|
|
13
|
+
.command('query <sql>')
|
|
14
|
+
.description('Execute SQL query via Meta API')
|
|
15
|
+
.option('--role <role>', 'Role to use (anon or service_role)', 'anon')
|
|
16
|
+
.option('--json', 'Output in JSON format')
|
|
17
|
+
.action(async (sql, options) => {
|
|
18
|
+
try {
|
|
19
|
+
await handleDbQuery(sql, options, program);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
23
|
+
console.error(formatError(message));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
db
|
|
28
|
+
.command('tables')
|
|
29
|
+
.description('List tables in current tenant database')
|
|
30
|
+
.option('--schema <schema>', 'Schema name', 'public')
|
|
31
|
+
.option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
|
|
32
|
+
.option('--json', 'Output in JSON format')
|
|
33
|
+
.action(async (options) => {
|
|
34
|
+
try {
|
|
35
|
+
await handleDbTables(options, program);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
console.error(formatError(message));
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
db
|
|
44
|
+
.command('schema <table>')
|
|
45
|
+
.description('Show table schema (columns, indexes)')
|
|
46
|
+
.option('--schema <schema>', 'Schema name', 'public')
|
|
47
|
+
.option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
|
|
48
|
+
.option('--json', 'Output in JSON format')
|
|
49
|
+
.action(async (table, options) => {
|
|
50
|
+
try {
|
|
51
|
+
await handleDbSchema(table, options, program);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
55
|
+
console.error(formatError(message));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
db
|
|
60
|
+
.command('create-table <name>')
|
|
61
|
+
.description('Create a new table (requires service_role; executes immediately, no confirmation prompt)')
|
|
62
|
+
.option('--columns <json>', 'Column definitions (JSON array)')
|
|
63
|
+
.option('--schema <schema>', 'Schema name (single-tenant only; multi-tenant always targets the tenant database)')
|
|
64
|
+
.option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
|
|
65
|
+
.option('--json', 'Output in JSON format')
|
|
66
|
+
.action(async (name, options) => {
|
|
67
|
+
try {
|
|
68
|
+
await handleDbCreateTable(name, options, program);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
72
|
+
console.error(formatError(message));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
db
|
|
77
|
+
.command('add-column <table> <column>')
|
|
78
|
+
.description('Add a column to a table (requires service_role; executes immediately, no confirmation prompt)')
|
|
79
|
+
.option('--type <type>', 'Column data type', 'text')
|
|
80
|
+
.option('--nullable', 'Allow NULL values', true)
|
|
81
|
+
.option('--default <value>', 'Default value')
|
|
82
|
+
.option('--schema <schema>', 'Schema name (single-tenant only; multi-tenant always targets the tenant database)')
|
|
83
|
+
.option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
|
|
84
|
+
.option('--json', 'Output in JSON format')
|
|
85
|
+
.action(async (table, column, options) => {
|
|
86
|
+
try {
|
|
87
|
+
await handleDbAddColumn(table, column, options, program);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
91
|
+
console.error(formatError(message));
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
db
|
|
96
|
+
.command('push <file>')
|
|
97
|
+
.description('Apply a SQL file (DDL + RLS + seed) to the active database (single-tenant, or your tenant db in multi-tenant). Shows the plan and requires authorization.')
|
|
98
|
+
.option('--schema <schema>', 'Target schema for the __SCHEMA__ placeholder (single-tenant)', 'public')
|
|
99
|
+
.option('--rls <file>', 'Declarative RLS file (db/rls.json); takes precedence over RLS INSERTs embedded in the SQL file')
|
|
100
|
+
.option('--role <role>', 'Role to use (anon or service_role)', 'service_role')
|
|
101
|
+
.option('--dry-run', 'Show the statements without executing them')
|
|
102
|
+
.option('--yes', 'Authorize non-interactively (skip the confirm prompt)')
|
|
103
|
+
.option('--json', 'Output in JSON format')
|
|
104
|
+
.action(async (file, options) => {
|
|
105
|
+
try {
|
|
106
|
+
await handleDbPush(file, options, program);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
110
|
+
if (options.json || program.opts().json) {
|
|
111
|
+
console.log(JSON.stringify({ code: 'DB_PUSH_FAILED', message }, null, 2));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
console.error(formatError(message));
|
|
115
|
+
}
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
export async function handleDbQuery(sql, options, program) {
|
|
121
|
+
const profileManager = new ProfileManager();
|
|
122
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
123
|
+
if (!currentProfile) {
|
|
124
|
+
throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
|
|
125
|
+
}
|
|
126
|
+
const credentialStore = new CredentialStore();
|
|
127
|
+
const credentials = await credentialStore.getCredentials(currentProfile.name);
|
|
128
|
+
if (!credentials) {
|
|
129
|
+
throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
|
|
130
|
+
}
|
|
131
|
+
const useServiceRole = options.role === 'service_role';
|
|
132
|
+
// Multi-tenant: /pg/query is platform-admin only (per-tenant keys get 401), so
|
|
133
|
+
// route through the tenant self-service DDL endpoint with the per-tenant
|
|
134
|
+
// service_role key. The resolver role-gates on service_role, so --role anon is
|
|
135
|
+
// not applicable here and the query always runs as the tenant's service_role.
|
|
136
|
+
let result;
|
|
137
|
+
if (currentProfile.mode === 'multi-tenant') {
|
|
138
|
+
if (!currentProfile.tenantId) {
|
|
139
|
+
throw new Error('Multi-tenant profile is missing tenantId; re-run "pxbaas login --tenant-id <id>" with per-tenant keys.');
|
|
140
|
+
}
|
|
141
|
+
if (!useServiceRole) {
|
|
142
|
+
console.error(formatWarning('db query in multi-tenant mode always runs as the tenant service_role (tenant-ddl ignores --role anon).'));
|
|
143
|
+
}
|
|
144
|
+
const tenantDriver = new TenantDdlDriver({
|
|
145
|
+
endpoint: currentProfile.endpoint,
|
|
146
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
147
|
+
});
|
|
148
|
+
const rows = (await tenantDriver.query(sql));
|
|
149
|
+
result = { rows, rowCount: rows.length };
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
const metaDriver = new MetaDriver({
|
|
153
|
+
endpoint: currentProfile.endpoint,
|
|
154
|
+
anonKey: credentials.anonKey,
|
|
155
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
156
|
+
tenantId: currentProfile.tenantId,
|
|
157
|
+
});
|
|
158
|
+
result = await metaDriver.query(sql, useServiceRole);
|
|
159
|
+
}
|
|
160
|
+
if (options.json || program.opts().json) {
|
|
161
|
+
console.log(JSON.stringify(result, null, 2));
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
if (result.rows.length === 0) {
|
|
165
|
+
console.log('Query executed successfully, no rows returned.');
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
console.log(formatSuccess(`Query returned ${result.rows.length} row(s):`));
|
|
169
|
+
// Simple table display
|
|
170
|
+
const columns = Object.keys(result.rows[0]);
|
|
171
|
+
console.log(columns.join('\t'));
|
|
172
|
+
console.log(columns.map(() => '---').join('\t'));
|
|
173
|
+
for (const row of result.rows) {
|
|
174
|
+
const values = columns.map(col => String(row[col] ?? ''));
|
|
175
|
+
console.log(values.join('\t'));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async function handleDbTables(options, program) {
|
|
181
|
+
const profileManager = new ProfileManager();
|
|
182
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
183
|
+
if (!currentProfile) {
|
|
184
|
+
throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
|
|
185
|
+
}
|
|
186
|
+
const credentialStore = new CredentialStore();
|
|
187
|
+
const credentials = await credentialStore.getCredentials(currentProfile.name);
|
|
188
|
+
if (!credentials) {
|
|
189
|
+
throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
|
|
190
|
+
}
|
|
191
|
+
const useServiceRole = options.role === 'service_role';
|
|
192
|
+
// C1 fix: introspect via the mode-appropriate backend. In multi-tenant the
|
|
193
|
+
// Meta API (/pg/*) rejects per-tenant keys with 401, so route through
|
|
194
|
+
// tenant-ddl (information_schema) — the same channel `db query` already uses.
|
|
195
|
+
const introspector = makeIntrospector({
|
|
196
|
+
mode: currentProfile.mode,
|
|
197
|
+
endpoint: currentProfile.endpoint,
|
|
198
|
+
anonKey: credentials.anonKey,
|
|
199
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
200
|
+
tenantId: currentProfile.tenantId,
|
|
201
|
+
schema: options.schema,
|
|
202
|
+
useServiceRole,
|
|
203
|
+
});
|
|
204
|
+
const tables = await introspector.listTables();
|
|
205
|
+
const schemaLabel = await introspector.currentSchema();
|
|
206
|
+
if (options.json || program.opts().json) {
|
|
207
|
+
console.log(JSON.stringify({ schema: schemaLabel, tables }, null, 2));
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
if (tables.length === 0) {
|
|
211
|
+
console.log(`No tables found in schema "${schemaLabel}".`);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
console.log(formatSuccess(`Found ${tables.length} table(s) in schema "${schemaLabel}":`));
|
|
215
|
+
console.log('');
|
|
216
|
+
for (const table of tables) {
|
|
217
|
+
console.log(` ${table.name}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async function handleDbSchema(table, options, program) {
|
|
223
|
+
const profileManager = new ProfileManager();
|
|
224
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
225
|
+
if (!currentProfile) {
|
|
226
|
+
throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
|
|
227
|
+
}
|
|
228
|
+
const credentialStore = new CredentialStore();
|
|
229
|
+
const credentials = await credentialStore.getCredentials(currentProfile.name);
|
|
230
|
+
if (!credentials) {
|
|
231
|
+
throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
|
|
232
|
+
}
|
|
233
|
+
const useServiceRole = options.role === 'service_role';
|
|
234
|
+
// C1 fix: same mode-aware introspection as `db tables` (multi-tenant -> tenant-ddl).
|
|
235
|
+
const introspector = makeIntrospector({
|
|
236
|
+
mode: currentProfile.mode,
|
|
237
|
+
endpoint: currentProfile.endpoint,
|
|
238
|
+
anonKey: credentials.anonKey,
|
|
239
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
240
|
+
tenantId: currentProfile.tenantId,
|
|
241
|
+
schema: options.schema,
|
|
242
|
+
useServiceRole,
|
|
243
|
+
});
|
|
244
|
+
const schemaLabel = await introspector.currentSchema();
|
|
245
|
+
const [columns, indexes] = await Promise.all([
|
|
246
|
+
introspector.getColumns(table),
|
|
247
|
+
introspector.getIndexes(table),
|
|
248
|
+
]);
|
|
249
|
+
if (options.json || program.opts().json) {
|
|
250
|
+
console.log(JSON.stringify({ table, schema: schemaLabel, columns, indexes }, null, 2));
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
console.log(formatSuccess(`Schema for table "${schemaLabel}.${table}"`));
|
|
254
|
+
console.log('\nColumns:');
|
|
255
|
+
console.log('Name\tType\tNullable\tDefault\tPrimary Key\tComment');
|
|
256
|
+
console.log('---\t---\t---\t---\t---\t---');
|
|
257
|
+
for (const col of columns) {
|
|
258
|
+
const nullable = col.isNullable ? 'YES' : 'NO';
|
|
259
|
+
const defaultValue = col.defaultValue ?? '';
|
|
260
|
+
const isPk = col.isPrimaryKey ? 'YES' : 'NO';
|
|
261
|
+
const comment = col.comment ?? '';
|
|
262
|
+
console.log(`${col.name}\t${col.dataType}\t${nullable}\t${defaultValue}\t${isPk}\t${comment}`);
|
|
263
|
+
}
|
|
264
|
+
if (indexes.length > 0) {
|
|
265
|
+
console.log('\nIndexes:');
|
|
266
|
+
console.log('Name\tColumns\tUnique\tPrimary\tType');
|
|
267
|
+
console.log('---\t---\t---\t---\t---');
|
|
268
|
+
for (const idx of indexes) {
|
|
269
|
+
const cols = idx.columns.join(', ');
|
|
270
|
+
const unique = idx.isUnique ? 'YES' : 'NO';
|
|
271
|
+
const primary = idx.isPrimary ? 'YES' : 'NO';
|
|
272
|
+
console.log(`${idx.name}\t${cols}\t${unique}\t${primary}\t${idx.type}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/** Same actionable error as `handleDbQuery` for a malformed multi-tenant profile. */
|
|
278
|
+
function assertTenantId(profile) {
|
|
279
|
+
if (!profile.tenantId) {
|
|
280
|
+
throw new Error('Multi-tenant profile is missing tenantId; re-run "pxbaas login --tenant-id <id>" with per-tenant keys.');
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* D1 fix: run one DDL statement through the channel the profile can actually
|
|
285
|
+
* authenticate on. Mirrors the mode dispatch of `handleDbQuery`: in
|
|
286
|
+
* multi-tenant the Meta API (/pg/*) only accepts the platform global
|
|
287
|
+
* service_role key (per-tenant keys get 401), so tenant DDL must go through
|
|
288
|
+
* /api/tenant-ddl with the per-tenant service_role key.
|
|
289
|
+
*/
|
|
290
|
+
async function runDdl(profile, credentials, sql, options) {
|
|
291
|
+
const useServiceRole = options.role === 'service_role';
|
|
292
|
+
if (profile.mode === 'multi-tenant') {
|
|
293
|
+
assertTenantId(profile);
|
|
294
|
+
// tenant-ddl role-gates on service_role, so --role anon is not applicable
|
|
295
|
+
// and the statement always runs as the tenant's service_role.
|
|
296
|
+
if (!useServiceRole) {
|
|
297
|
+
console.error(formatWarning(`${options.command} in multi-tenant mode always runs as the tenant service_role (tenant-ddl ignores --role anon).`));
|
|
298
|
+
}
|
|
299
|
+
const tenantDriver = new TenantDdlDriver({
|
|
300
|
+
endpoint: profile.endpoint,
|
|
301
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
302
|
+
});
|
|
303
|
+
const rows = (await tenantDriver.query(sql));
|
|
304
|
+
return { rows, rowCount: rows.length };
|
|
305
|
+
}
|
|
306
|
+
const metaDriver = new MetaDriver({
|
|
307
|
+
endpoint: profile.endpoint,
|
|
308
|
+
anonKey: credentials.anonKey,
|
|
309
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
310
|
+
tenantId: profile.tenantId,
|
|
311
|
+
});
|
|
312
|
+
return metaDriver.query(sql, useServiceRole);
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* D3 / 06-§3 fix: the REAL target database name in multi-tenant mode, via the
|
|
316
|
+
* same route `db tables` uses (tenant-ddl `SELECT DATABASE()`). Falls back to
|
|
317
|
+
* the platform's `tenant_<id>` naming convention so a failed read-only probe
|
|
318
|
+
* never hard-fails an otherwise successful DDL.
|
|
319
|
+
*/
|
|
320
|
+
async function resolveTenantSchemaLabel(profile, credentials) {
|
|
321
|
+
assertTenantId(profile);
|
|
322
|
+
try {
|
|
323
|
+
const introspector = makeIntrospector({
|
|
324
|
+
mode: profile.mode,
|
|
325
|
+
endpoint: profile.endpoint,
|
|
326
|
+
anonKey: credentials.anonKey,
|
|
327
|
+
serviceRoleKey: credentials.serviceRoleKey,
|
|
328
|
+
tenantId: profile.tenantId,
|
|
329
|
+
});
|
|
330
|
+
const label = await introspector.currentSchema();
|
|
331
|
+
if (label)
|
|
332
|
+
return label;
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
// fall through to the convention-based label
|
|
336
|
+
}
|
|
337
|
+
return `tenant_${profile.tenantId}`;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* D2/D3 fix: resolve the schema a DDL command actually targets. Multi-tenant
|
|
341
|
+
* DDL always lands in the tenant's own database, so report that real name and
|
|
342
|
+
* warn when the user explicitly asked for a different --schema (instead of
|
|
343
|
+
* silently dropping the input). Single-tenant keeps the requested value with
|
|
344
|
+
* the historical `public` default.
|
|
345
|
+
*/
|
|
346
|
+
async function resolveDdlSchema(profile, credentials, requestedSchema) {
|
|
347
|
+
if (profile.mode !== 'multi-tenant') {
|
|
348
|
+
return requestedSchema ?? 'public';
|
|
349
|
+
}
|
|
350
|
+
const effective = await resolveTenantSchemaLabel(profile, credentials);
|
|
351
|
+
if (requestedSchema && requestedSchema !== effective) {
|
|
352
|
+
console.error(formatWarning(`--schema is ignored in multi-tenant mode: DDL always targets the tenant database "${effective}" (requested "${requestedSchema}").`));
|
|
353
|
+
}
|
|
354
|
+
return effective;
|
|
355
|
+
}
|
|
356
|
+
export async function handleDbCreateTable(name, options, program) {
|
|
357
|
+
const profileManager = new ProfileManager();
|
|
358
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
359
|
+
if (!currentProfile) {
|
|
360
|
+
throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
|
|
361
|
+
}
|
|
362
|
+
const credentialStore = new CredentialStore();
|
|
363
|
+
const credentials = await credentialStore.getCredentials(currentProfile.name);
|
|
364
|
+
if (!credentials) {
|
|
365
|
+
throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
|
|
366
|
+
}
|
|
367
|
+
// Parse columns if provided
|
|
368
|
+
let columnDefs = [];
|
|
369
|
+
if (options.columns) {
|
|
370
|
+
try {
|
|
371
|
+
columnDefs = JSON.parse(options.columns);
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
throw new Error('Invalid JSON in --columns. Expected format: [{"name":"id","type":"bigint","primaryKey":true},...]');
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
// Default: create table with id column
|
|
379
|
+
columnDefs = [
|
|
380
|
+
{ name: 'id', type: 'bigint', nullable: false, primaryKey: true },
|
|
381
|
+
{ name: 'created_at', type: 'timestamp', nullable: false },
|
|
382
|
+
];
|
|
383
|
+
}
|
|
384
|
+
// D2/D3 fix: the effective target schema (tenant db in multi-tenant).
|
|
385
|
+
const effectiveSchema = await resolveDdlSchema(currentProfile, credentials, options.schema);
|
|
386
|
+
const isMultiTenant = currentProfile.mode === 'multi-tenant';
|
|
387
|
+
// Build SQL
|
|
388
|
+
const columnSql = columnDefs.map(col => {
|
|
389
|
+
let sql = `${col.name} ${col.type}`;
|
|
390
|
+
if (col.primaryKey)
|
|
391
|
+
sql += ' PRIMARY KEY';
|
|
392
|
+
if (col.nullable === false)
|
|
393
|
+
sql += ' NOT NULL';
|
|
394
|
+
return sql;
|
|
395
|
+
}).join(', ');
|
|
396
|
+
// Multi-tenant: NO schema qualifier — the tenant-ddl connection is bound to
|
|
397
|
+
// the tenant's own database and a `public.` prefix would be rejected (or
|
|
398
|
+
// would write into the shared public db). Single-tenant shape is unchanged.
|
|
399
|
+
const sql = isMultiTenant
|
|
400
|
+
? `CREATE TABLE \`${name}\` (${columnSql})`
|
|
401
|
+
: `CREATE TABLE ${effectiveSchema}.${name} (${columnSql})`;
|
|
402
|
+
const result = await runDdl(currentProfile, credentials, sql, {
|
|
403
|
+
role: options.role,
|
|
404
|
+
command: 'db create-table',
|
|
405
|
+
});
|
|
406
|
+
if (options.json || program.opts().json) {
|
|
407
|
+
console.log(JSON.stringify({ table: name, schema: effectiveSchema, sql, result }, null, 2));
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
console.log(formatSuccess(`Created table "${effectiveSchema}.${name}"`));
|
|
411
|
+
console.log(` SQL: ${sql}`);
|
|
412
|
+
console.log(formatWarning(' Note: the REST schema cache re-introspects after DDL; the new table is visible to /rest/v1 within a few seconds.'));
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
export async function handleDbAddColumn(table, column, options, program) {
|
|
416
|
+
const profileManager = new ProfileManager();
|
|
417
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
418
|
+
if (!currentProfile) {
|
|
419
|
+
throw new Error('No active profile. Use "pxbaas login" to authenticate first.');
|
|
420
|
+
}
|
|
421
|
+
const credentialStore = new CredentialStore();
|
|
422
|
+
const credentials = await credentialStore.getCredentials(currentProfile.name);
|
|
423
|
+
if (!credentials) {
|
|
424
|
+
throw new Error(`No credentials found for profile: ${currentProfile.name}. Use "pxbaas login" to authenticate.`);
|
|
425
|
+
}
|
|
426
|
+
// D2/D3 fix: the effective target schema (tenant db in multi-tenant).
|
|
427
|
+
const effectiveSchema = await resolveDdlSchema(currentProfile, credentials, options.schema);
|
|
428
|
+
const isMultiTenant = currentProfile.mode === 'multi-tenant';
|
|
429
|
+
// Build SQL. Multi-tenant: NO schema qualifier (see handleDbCreateTable).
|
|
430
|
+
let sql = isMultiTenant
|
|
431
|
+
? `ALTER TABLE \`${table}\` ADD COLUMN ${column} ${options.type}`
|
|
432
|
+
: `ALTER TABLE ${effectiveSchema}.${table} ADD COLUMN ${column} ${options.type}`;
|
|
433
|
+
if (!options.nullable) {
|
|
434
|
+
sql += ' NOT NULL';
|
|
435
|
+
}
|
|
436
|
+
if (options.default !== undefined) {
|
|
437
|
+
sql += ` DEFAULT ${options.default}`;
|
|
438
|
+
}
|
|
439
|
+
const result = await runDdl(currentProfile, credentials, sql, {
|
|
440
|
+
role: options.role,
|
|
441
|
+
command: 'db add-column',
|
|
442
|
+
});
|
|
443
|
+
if (options.json || program.opts().json) {
|
|
444
|
+
console.log(JSON.stringify({ table, column, schema: effectiveSchema, sql, result }, null, 2));
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
console.log(formatSuccess(`Added column "${column}" to table "${effectiveSchema}.${table}"`));
|
|
448
|
+
console.log(` SQL: ${sql}`);
|
|
449
|
+
console.log(formatWarning(' Note: REST select=* re-introspects columns after DDL. If a query still omits the new column, select it explicitly or retry in a few seconds (schema cache refresh).'));
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
export async function handleDbPush(file, options, program) {
|
|
453
|
+
if (!existsSync(file)) {
|
|
454
|
+
throw new Error(`SQL file not found: ${file}`);
|
|
455
|
+
}
|
|
456
|
+
const raw = await readFile(file, 'utf8');
|
|
457
|
+
const json = Boolean(options.json || program.opts().json);
|
|
458
|
+
// Mode-aware: single-tenant -> /pg/query (global admin); multi-tenant ->
|
|
459
|
+
// /api/tenant-ddl (per-tenant service_role). RLS is diverted appropriately.
|
|
460
|
+
const sink = await getSchemaSink(options.role === 'anon' ? 'anon' : 'service_role');
|
|
461
|
+
// 06-§3 fix: in multi-tenant the statements execute in the tenant's OWN
|
|
462
|
+
// database, so the plan/JSON must report that real target instead of
|
|
463
|
+
// echoing the --schema default ("public"), which misleads audits.
|
|
464
|
+
let effectiveSchema = options.schema;
|
|
465
|
+
if (sink.mode === 'multi-tenant') {
|
|
466
|
+
const profileManager = new ProfileManager();
|
|
467
|
+
const currentProfile = await profileManager.getCurrentProfile();
|
|
468
|
+
const credentials = currentProfile
|
|
469
|
+
? await new CredentialStore().getCredentials(currentProfile.name)
|
|
470
|
+
: null;
|
|
471
|
+
if (currentProfile && credentials) {
|
|
472
|
+
effectiveSchema = await resolveTenantSchemaLabel(currentProfile, credentials);
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
let rls = null;
|
|
476
|
+
if (options.rls) {
|
|
477
|
+
if (!existsSync(options.rls)) {
|
|
478
|
+
throw new Error(`RLS file not found: ${options.rls}`);
|
|
479
|
+
}
|
|
480
|
+
rls = parseRlsJson(await readFile(options.rls, 'utf8'));
|
|
481
|
+
}
|
|
482
|
+
const result = await applySchema({
|
|
483
|
+
rawSql: raw,
|
|
484
|
+
source: file,
|
|
485
|
+
rls,
|
|
486
|
+
schema: effectiveSchema,
|
|
487
|
+
dryRun: Boolean(options.dryRun),
|
|
488
|
+
assumeYes: Boolean(options.yes),
|
|
489
|
+
json,
|
|
490
|
+
}, sink);
|
|
491
|
+
if (json) {
|
|
492
|
+
console.log(JSON.stringify(result, null, 2));
|
|
493
|
+
}
|
|
494
|
+
else if (result.total === 0) {
|
|
495
|
+
console.log(formatWarning(`Nothing to apply from ${file}.`));
|
|
496
|
+
}
|
|
497
|
+
if (result.failed > 0)
|
|
498
|
+
process.exit(1);
|
|
499
|
+
}
|
|
500
|
+
//# 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 @@
|
|
|
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"}
|