delete the global push from the server, keep the warning
`pushSchema()` had no callers left once installs stopped using it, and it is not the kind of dead code worth keeping around: it is a one-line way to run the exact command that stopped applying anything on a real server, and dropped tables when forced. The doc comment stays in its place, because the useful artefact is the reason rather than the function. `bun db:push` remains correct in exactly one situation — `officer-setup`'s build step, on a machine with no tables yet, where "make the database match this schema" is an instruction with no ambiguity to resolve. Every other caller now has a scoped path. tsgo clean, frontend builds, 873 pass / 7 fail unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -190,20 +190,15 @@ export default defineConfig({
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply the schema to Postgres.
|
* The global push — `bun db:push` over the whole schema — is deliberately NOT used by installs.
|
||||||
*
|
*
|
||||||
* Shells out to the same `bun db:push` a human runs, rather than driving drizzle-kit in-process: it is
|
* It was removed as a plugin's install step on 2026-08-16 and is not replaced by anything here: nothing
|
||||||
* one definition of "apply the schema" instead of two that can disagree, and an owner can reproduce
|
* in the server should run it. `scripts/setup/officer-setup/lib/build.sh` still does, once, on a machine
|
||||||
* exactly what an install did with a command they already know.
|
* that has no tables yet, which is the only situation where "make the database match this schema" is a
|
||||||
|
* safe instruction.
|
||||||
*
|
*
|
||||||
* `--force` because there is nothing to prompt about by construction — the barrel only ever gains entries
|
* On any machine that already holds tables the schema does not declare, that command is a trap. It stops
|
||||||
* unless a plugin's source is deleted — and a prompt with no terminal attached would hang the install
|
* on an interactive rename prompt no non-TTY caller can answer (applying nothing and exiting 0), and
|
||||||
* forever rather than fail it.
|
* `--force` converts that into dropping every one of those tables. Both were observed on a real server:
|
||||||
|
* see `pushPluginSchema` below for the full account and for what installs do instead.
|
||||||
*/
|
*/
|
||||||
export async function pushSchema(onLog?: OnLog): Promise<PushResult> {
|
|
||||||
// Streamed rather than captured. drizzle writes progress to stderr and results to stdout, and this is
|
|
||||||
// the command that reported success while creating nothing — so what it says is worth showing at the
|
|
||||||
// time it says it, not summarised into a exit code afterwards.
|
|
||||||
const result = await runLogged(['bun', 'run', 'db:push', '--force'], { cwd: PLATFORM_DIR, onLog });
|
|
||||||
return { ok: result.ok, ms: result.ms, output: result.output.slice(-600) };
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user