neon 2.47.0 → 3.1.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.
- package/README.md +54 -0
- package/dist/_shared/auth_selection.js +76 -79
- package/dist/_shared/credentials.js +166 -187
- package/dist/_shared/env-core/env.js +395 -0
- package/dist/_shared/env-core/reuse-secrets.js +179 -0
- package/dist/_shared/paths.js +129 -126
- package/dist/_shared/profiles.js +192 -242
- package/dist/_shared/secure_file.js +36 -38
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/analytics.js +163 -207
- package/dist/api.js +815 -758
- package/dist/auth.js +121 -141
- package/dist/auth_context.js +39 -53
- package/dist/cli.js +4 -7
- package/dist/commands/api.js +220 -250
- package/dist/commands/api_keys.js +251 -314
- package/dist/commands/auth.js +283 -328
- package/dist/commands/bootstrap.js +372 -437
- package/dist/commands/branches.js +304 -455
- package/dist/commands/bucket.js +374 -514
- package/dist/commands/checkout.js +213 -298
- package/dist/commands/config.js +575 -658
- package/dist/commands/connection_string.js +137 -165
- package/dist/commands/data_api.js +238 -260
- package/dist/commands/databases.js +67 -76
- package/dist/commands/deploy.js +31 -25
- package/dist/commands/dev.js +642 -681
- package/dist/commands/diff.js +156 -200
- package/dist/commands/env.js +243 -303
- package/dist/commands/functions.js +275 -341
- package/dist/commands/index.js +70 -65
- package/dist/commands/init.js +84 -119
- package/dist/commands/inspect.js +55 -55
- package/dist/commands/ip_allow.js +88 -120
- package/dist/commands/link.js +874 -1019
- package/dist/commands/logs.js +291 -0
- package/dist/commands/neon_auth.js +725 -933
- package/dist/commands/operations.js +34 -25
- package/dist/commands/orgs.js +28 -18
- package/dist/commands/profile.js +614 -845
- package/dist/commands/projects.js +313 -373
- package/dist/commands/psql.js +60 -58
- package/dist/commands/roles.js +55 -58
- package/dist/commands/schema_diff.js +87 -131
- package/dist/commands/set_context.js +34 -26
- package/dist/commands/snapshots.js +288 -413
- package/dist/commands/status.js +41 -37
- package/dist/commands/user.js +21 -10
- package/dist/commands/vpc_endpoints.js +85 -113
- package/dist/config.js +7 -6
- package/dist/config_format.js +50 -66
- package/dist/config_template.js +128 -157
- package/dist/context.js +183 -235
- package/dist/current_branch_fast_path.js +40 -49
- package/dist/dev/env.js +313 -394
- package/dist/dev/functions.js +54 -64
- package/dist/dev/inputs.js +46 -58
- package/dist/dev/runtime.js +135 -164
- package/dist/dev/websocket.js +766 -959
- package/dist/env.js +27 -33
- package/dist/env_file.js +118 -132
- package/dist/env_services.js +36 -38
- package/dist/errors.js +57 -68
- package/dist/functions_api.js +45 -43
- package/dist/help.js +189 -140
- package/dist/index.js +182 -257
- package/dist/init/agents.js +137 -118
- package/dist/init/auth.js +58 -68
- package/dist/init/bootstrap.js +325 -396
- package/dist/init/build_config.js +4 -2
- package/dist/init/detect_agent.js +56 -101
- package/dist/init/editors.js +35 -52
- package/dist/init/enrich_output.js +51 -66
- package/dist/init/extension.js +134 -171
- package/dist/init/inspect.js +179 -266
- package/dist/init/interactive.js +510 -622
- package/dist/init/neonctl.js +117 -168
- package/dist/init/orchestrate.js +157 -173
- package/dist/init/phases/auth.js +188 -202
- package/dist/init/phases/cleanup.js +23 -23
- package/dist/init/phases/db.js +251 -277
- package/dist/init/phases/getting_started.js +213 -223
- package/dist/init/phases/mcp.js +174 -224
- package/dist/init/phases/migrations.js +247 -248
- package/dist/init/phases/neon_auth.js +114 -133
- package/dist/init/phases/setup.js +546 -703
- package/dist/init/phases/skills.js +75 -86
- package/dist/init/phases/status.js +72 -67
- package/dist/init/resolve_context.js +102 -99
- package/dist/init/route_command.js +91 -98
- package/dist/init/skills.js +174 -218
- package/dist/init/vsix.js +77 -99
- package/dist/log.js +17 -16
- package/dist/neon_services.js +104 -129
- package/dist/parameters.gen.js +481 -471
- package/dist/pkg.js +17 -19
- package/dist/profile_keys.js +44 -47
- package/dist/psql/cli.js +44 -47
- package/dist/psql/command/cmd_cond.js +231 -406
- package/dist/psql/command/cmd_connect.js +557 -764
- package/dist/psql/command/cmd_copy.js +727 -983
- package/dist/psql/command/cmd_describe.js +1499 -1688
- package/dist/psql/command/cmd_format.js +733 -905
- package/dist/psql/command/cmd_io.js +1293 -2082
- package/dist/psql/command/cmd_lo.js +297 -359
- package/dist/psql/command/cmd_meta.js +727 -878
- package/dist/psql/command/cmd_misc.js +138 -172
- package/dist/psql/command/cmd_pipeline.js +547 -1099
- package/dist/psql/command/cmd_restrict.js +119 -155
- package/dist/psql/command/cmd_show.js +529 -688
- package/dist/psql/command/dispatch.js +261 -325
- package/dist/psql/command/inputQueue.js +35 -33
- package/dist/psql/command/shared.js +49 -63
- package/dist/psql/complete/filenames.js +90 -133
- package/dist/psql/complete/index.js +59 -97
- package/dist/psql/complete/matcher.js +236 -300
- package/dist/psql/complete/psqlVars.js +218 -223
- package/dist/psql/complete/queries.js +159 -177
- package/dist/psql/complete/rules.js +1493 -2299
- package/dist/psql/core/common.js +762 -1180
- package/dist/psql/core/help.js +456 -546
- package/dist/psql/core/mainloop.js +692 -1302
- package/dist/psql/core/prompt.js +391 -408
- package/dist/psql/core/settings.js +429 -644
- package/dist/psql/core/sqlHelp.js +480 -554
- package/dist/psql/core/startup.js +626 -815
- package/dist/psql/core/syncVars.js +67 -110
- package/dist/psql/core/variables.js +156 -278
- package/dist/psql/describe/formatters.js +884 -1285
- package/dist/psql/describe/processNamePattern.js +173 -260
- package/dist/psql/describe/queries.js +1368 -2403
- package/dist/psql/describe/versionGate.js +32 -41
- package/dist/psql/index.js +1414 -1927
- package/dist/psql/io/history.js +232 -271
- package/dist/psql/io/input.js +103 -108
- package/dist/psql/io/lineEditor/buffer.js +238 -319
- package/dist/psql/io/lineEditor/complete.js +135 -213
- package/dist/psql/io/lineEditor/filename.js +139 -148
- package/dist/psql/io/lineEditor/index.js +653 -870
- package/dist/psql/io/lineEditor/keymap.js +544 -702
- package/dist/psql/io/lineEditor/vt100.js +294 -341
- package/dist/psql/io/pgpass.js +158 -187
- package/dist/psql/io/pgservice.js +146 -183
- package/dist/psql/io/psqlrc.js +328 -403
- package/dist/psql/print/aligned.js +1020 -1683
- package/dist/psql/print/asciidoc.js +180 -214
- package/dist/psql/print/crosstab.js +281 -442
- package/dist/psql/print/csv.js +48 -70
- package/dist/psql/print/html.js +195 -226
- package/dist/psql/print/json.js +75 -88
- package/dist/psql/print/latex.js +291 -364
- package/dist/psql/print/pager.js +171 -242
- package/dist/psql/print/troff.js +194 -226
- package/dist/psql/print/unaligned.js +69 -95
- package/dist/psql/print/units.js +167 -169
- package/dist/psql/scanner/slash.js +428 -483
- package/dist/psql/scanner/sql.js +445 -889
- package/dist/psql/scanner/stringutils.js +309 -379
- package/dist/psql/types/index.js +2 -7
- package/dist/psql/types/scanner.js +25 -22
- package/dist/psql/wire/connection.js +2042 -2803
- package/dist/psql/wire/copy.js +84 -100
- package/dist/psql/wire/notify.js +39 -59
- package/dist/psql/wire/pipeline.js +305 -518
- package/dist/psql/wire/protocol.js +349 -417
- package/dist/psql/wire/sasl.js +180 -265
- package/dist/psql/wire/tls.js +400 -561
- package/dist/storage_api.js +115 -129
- package/dist/test_utils/fixtures.js +94 -113
- package/dist/test_utils/oauth_server.js +10 -7
- package/dist/test_utils/project_dir.js +33 -0
- package/dist/utils/ai_gateway_notice.js +131 -162
- package/dist/utils/api_enums.js +21 -28
- package/dist/utils/auth.js +10 -4
- package/dist/utils/branch_notice.js +20 -19
- package/dist/utils/branch_picker.js +83 -89
- package/dist/utils/cli_name.js +15 -12
- package/dist/utils/compute_units.js +20 -27
- package/dist/utils/config_diff.js +127 -158
- package/dist/utils/enrichers.js +95 -148
- package/dist/utils/esbuild.js +133 -147
- package/dist/utils/flags.js +35 -47
- package/dist/utils/formats.js +8 -15
- package/dist/utils/git_diff.js +69 -80
- package/dist/utils/inspect_db.js +101 -143
- package/dist/utils/inspect_queries.js +179 -142
- package/dist/utils/middlewares.js +37 -44
- package/dist/utils/openapi.js +87 -99
- package/dist/utils/package_manager.js +312 -110
- package/dist/utils/point_in_time.js +49 -53
- package/dist/utils/psql.js +89 -106
- package/dist/utils/service_picker.js +55 -58
- package/dist/utils/string.js +5 -5
- package/dist/utils/ui.js +38 -55
- package/dist/utils/write_sync.js +26 -35
- package/dist/utils/zip.js +4 -3
- package/dist/writer.js +67 -87
- package/package.json +9 -7
|
@@ -1,251 +1,250 @@
|
|
|
1
|
+
import { DO_NOT_SUBSTITUTE_HINT, MISSING_BINARY_HINT, formatExecCommand, formatInstallCommand, resolvePackageManager } from "../../utils/package_manager.js";
|
|
1
2
|
import { ensureSkillsUpToDate } from "../skills.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
3
|
+
//#region src/init/phases/migrations.ts
|
|
4
|
+
async function handleMigrationsPhase(options) {
|
|
5
|
+
if (options.agent) await ensureSkillsUpToDate(options.agent);
|
|
6
|
+
const agentArgs = options.agent ? [
|
|
7
|
+
"--agent",
|
|
8
|
+
options.agent,
|
|
9
|
+
"--json"
|
|
10
|
+
] : ["--json"];
|
|
11
|
+
const pm = resolvePackageManager(options.cwd);
|
|
12
|
+
if (options.scaffold) {
|
|
13
|
+
if (options.scaffold === "prisma") return {
|
|
14
|
+
phase: "migrations",
|
|
15
|
+
status: "scaffolding",
|
|
16
|
+
tool: "prisma",
|
|
17
|
+
nextAction: {
|
|
18
|
+
type: "agent_action",
|
|
19
|
+
steps: [
|
|
20
|
+
{
|
|
21
|
+
id: "install_prisma",
|
|
22
|
+
description: `Install Prisma as a dev dependency. ${DO_NOT_SUBSTITUTE_HINT}`,
|
|
23
|
+
command: formatInstallCommand(pm, ["prisma"], { dev: true })
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "init_prisma",
|
|
27
|
+
description: `Initialize Prisma with PostgreSQL provider. ${MISSING_BINARY_HINT}`,
|
|
28
|
+
command: formatExecCommand(pm, "prisma", [
|
|
29
|
+
"init",
|
|
30
|
+
"--datasource-provider",
|
|
31
|
+
"postgresql"
|
|
32
|
+
])
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "configure_env",
|
|
36
|
+
description: "Ensure DATABASE_URL in .env points to your Neon database. The prisma init command may have created a placeholder — replace it with the real connection string if needed."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "create_schema",
|
|
40
|
+
description: "Help the user define their initial schema in prisma/schema.prisma based on their application needs."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "run_migration",
|
|
44
|
+
description: `Create and apply the initial migration. ${MISSING_BINARY_HINT}`,
|
|
45
|
+
command: formatExecCommand(pm, "prisma", [
|
|
46
|
+
"migrate",
|
|
47
|
+
"dev",
|
|
48
|
+
"--name",
|
|
49
|
+
"init"
|
|
50
|
+
])
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
onComplete: {
|
|
54
|
+
type: "complete",
|
|
55
|
+
message: `Prisma is set up with your Neon database. You can now define models in schema.prisma and run migrations with \`${formatExecCommand(pm, "prisma", ["migrate", "dev"])}\`.`
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
phase: "migrations",
|
|
61
|
+
status: "scaffolding",
|
|
62
|
+
tool: "drizzle",
|
|
63
|
+
nextAction: {
|
|
64
|
+
type: "agent_action",
|
|
65
|
+
steps: [
|
|
66
|
+
{
|
|
67
|
+
id: "install_drizzle",
|
|
68
|
+
description: `Install Drizzle ORM, drizzle-kit, and the Neon serverless driver. ${DO_NOT_SUBSTITUTE_HINT}`,
|
|
69
|
+
command: [formatInstallCommand(pm, ["drizzle-orm", "@neondatabase/serverless"]), formatInstallCommand(pm, ["drizzle-kit"], { dev: true })].join(" && ")
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "create_config",
|
|
73
|
+
description: "Create drizzle.config.ts at the project root. Set the dialect to 'postgresql' and dbCredentials.url to process.env.DATABASE_URL."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "create_schema",
|
|
77
|
+
description: "Create a schema file (e.g. src/db/schema.ts) and help the user define their initial tables using Drizzle's table builder."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
id: "run_migration",
|
|
81
|
+
description: `Generate and apply the initial migration. ${MISSING_BINARY_HINT}`,
|
|
82
|
+
command: drizzleGenerateAndMigrate(pm)
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
onComplete: {
|
|
86
|
+
type: "complete",
|
|
87
|
+
message: `Drizzle ORM is set up with your Neon database. Define tables in your schema file and run migrations with \`${drizzleGenerateAndMigrate(pm)}\`.`
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (options.apply && options.tool) {
|
|
93
|
+
const applySteps = getMigrationApplySteps(options.tool, pm);
|
|
94
|
+
return {
|
|
95
|
+
phase: "migrations",
|
|
96
|
+
status: "applying",
|
|
97
|
+
tool: options.tool,
|
|
98
|
+
nextAction: {
|
|
99
|
+
type: "agent_action",
|
|
100
|
+
steps: applySteps,
|
|
101
|
+
onComplete: {
|
|
102
|
+
type: "complete",
|
|
103
|
+
message: "Database migrations applied successfully."
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (options.tool && options.tool !== "none") return {
|
|
109
|
+
phase: "migrations",
|
|
110
|
+
status: "found",
|
|
111
|
+
detected: {
|
|
112
|
+
tool: options.tool,
|
|
113
|
+
migrationDir: options.migrationDir ?? null
|
|
114
|
+
},
|
|
115
|
+
nextAction: {
|
|
116
|
+
type: "ask_user",
|
|
117
|
+
question: `Found ${options.tool} migrations${options.migrationDir ? ` in ${options.migrationDir}` : ""}. Would you like to apply them to your Neon database?`,
|
|
118
|
+
options: [{
|
|
119
|
+
value: "apply",
|
|
120
|
+
label: "Yes, apply migrations"
|
|
121
|
+
}, {
|
|
122
|
+
value: "skip",
|
|
123
|
+
label: "Skip for now"
|
|
124
|
+
}],
|
|
125
|
+
responseMapping: {
|
|
126
|
+
apply: { args: [
|
|
127
|
+
"migrations",
|
|
128
|
+
"--json",
|
|
129
|
+
"--apply",
|
|
130
|
+
"--tool",
|
|
131
|
+
options.tool
|
|
132
|
+
] },
|
|
133
|
+
skip: { args: [...agentArgs, "--skip-migrations"] }
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
if (options.tool === "none") return {
|
|
138
|
+
phase: "migrations",
|
|
139
|
+
status: "none_found",
|
|
140
|
+
nextAction: {
|
|
141
|
+
type: "ask_user",
|
|
142
|
+
question: "No existing database migrations were found. Would you like to set up a migration framework?",
|
|
143
|
+
options: [
|
|
144
|
+
{
|
|
145
|
+
value: "prisma",
|
|
146
|
+
label: "Prisma (recommended for TypeScript)"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
value: "drizzle",
|
|
150
|
+
label: "Drizzle ORM"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
value: "skip",
|
|
154
|
+
label: "Skip - I'll handle migrations myself"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
context: "A migration framework helps you version-control your database schema changes.",
|
|
158
|
+
responseMapping: {
|
|
159
|
+
prisma: { args: [
|
|
160
|
+
"migrations",
|
|
161
|
+
"--json",
|
|
162
|
+
"--scaffold",
|
|
163
|
+
"prisma"
|
|
164
|
+
] },
|
|
165
|
+
drizzle: { args: [
|
|
166
|
+
"migrations",
|
|
167
|
+
"--json",
|
|
168
|
+
"--scaffold",
|
|
169
|
+
"drizzle"
|
|
170
|
+
] },
|
|
171
|
+
skip: { args: [...agentArgs, "--skip-migrations"] }
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
return {
|
|
176
|
+
phase: "migrations",
|
|
177
|
+
status: "detection_needed",
|
|
178
|
+
nextAction: {
|
|
179
|
+
type: "agent_check",
|
|
180
|
+
checks: [{
|
|
181
|
+
id: "existing_migrations",
|
|
182
|
+
description: "Check if the project has existing database migrations",
|
|
183
|
+
lookFor: [
|
|
184
|
+
"prisma/migrations/ directory or schema.prisma file",
|
|
185
|
+
"drizzle/ directory or drizzle.config.ts",
|
|
186
|
+
"migrations/ or db/migrations/ directory",
|
|
187
|
+
"knex migration files (knexfile.js/ts)"
|
|
188
|
+
]
|
|
189
|
+
}],
|
|
190
|
+
reportBack: {
|
|
191
|
+
type: "run_neon_init",
|
|
192
|
+
args: [
|
|
193
|
+
"migrations",
|
|
194
|
+
"--json",
|
|
195
|
+
"--tool",
|
|
196
|
+
"<prisma|drizzle|knex|none>",
|
|
197
|
+
"--migration-dir",
|
|
198
|
+
"<path|none>"
|
|
199
|
+
]
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
195
203
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
return [
|
|
241
|
-
{
|
|
242
|
-
id: "ensure_env",
|
|
243
|
-
description: "Verify DATABASE_URL is set in .env",
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
id: "apply",
|
|
247
|
-
description: `Apply ${tool} migrations to the Neon database using the appropriate command for your migration tool.`,
|
|
248
|
-
},
|
|
249
|
-
];
|
|
250
|
-
}
|
|
204
|
+
/** `drizzle-kit generate` then `migrate`, both through the project's runner. */
|
|
205
|
+
const drizzleGenerateAndMigrate = (pm) => [formatExecCommand(pm, "drizzle-kit", ["generate"]), formatExecCommand(pm, "drizzle-kit", ["migrate"])].join(" && ");
|
|
206
|
+
function getMigrationApplySteps(tool, pm) {
|
|
207
|
+
switch (tool) {
|
|
208
|
+
case "prisma": return [
|
|
209
|
+
{
|
|
210
|
+
id: "ensure_env",
|
|
211
|
+
description: "Verify DATABASE_URL is set in .env"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
id: "apply",
|
|
215
|
+
description: `Apply migrations to the Neon database. ${MISSING_BINARY_HINT}`,
|
|
216
|
+
command: formatExecCommand(pm, "prisma", ["migrate", "deploy"])
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
id: "generate",
|
|
220
|
+
description: "Generate the Prisma client.",
|
|
221
|
+
command: formatExecCommand(pm, "prisma", ["generate"])
|
|
222
|
+
}
|
|
223
|
+
];
|
|
224
|
+
case "drizzle": return [{
|
|
225
|
+
id: "ensure_env",
|
|
226
|
+
description: "Verify DATABASE_URL is set in .env"
|
|
227
|
+
}, {
|
|
228
|
+
id: "apply",
|
|
229
|
+
description: `Apply migrations to the Neon database. ${MISSING_BINARY_HINT}`,
|
|
230
|
+
command: formatExecCommand(pm, "drizzle-kit", ["migrate"])
|
|
231
|
+
}];
|
|
232
|
+
case "knex": return [{
|
|
233
|
+
id: "ensure_env",
|
|
234
|
+
description: "Verify DATABASE_URL is set in .env"
|
|
235
|
+
}, {
|
|
236
|
+
id: "apply",
|
|
237
|
+
description: `Apply migrations to the Neon database. ${MISSING_BINARY_HINT}`,
|
|
238
|
+
command: formatExecCommand(pm, "knex", ["migrate:latest"])
|
|
239
|
+
}];
|
|
240
|
+
default: return [{
|
|
241
|
+
id: "ensure_env",
|
|
242
|
+
description: "Verify DATABASE_URL is set in .env"
|
|
243
|
+
}, {
|
|
244
|
+
id: "apply",
|
|
245
|
+
description: `Apply ${tool} migrations to the Neon database using the appropriate command for your migration tool.`
|
|
246
|
+
}];
|
|
247
|
+
}
|
|
251
248
|
}
|
|
249
|
+
//#endregion
|
|
250
|
+
export { handleMigrationsPhase };
|