Files
template-app/apps/worker/src/seed-main.ts
T

43 lines
1.7 KiB
TypeScript

// SPDX-License-Identifier: LicenseRef-ConusAI-Template-1.0
// `pnpm seed`: the demo data (seed.ts) written into the database a development run uses. It runs as
// the runtime role, like the web shell, through the same use cases, so the schema must be migrated
// first (`pnpm migrate`; `pnpm dev` does both). It refuses a production run: demo people with known
// addresses in a real deployment's database is a mistake no flag should make easy.
import { loadAppEnv, PlatformEnvError, quietObservability } from "@app/config"
import { buildWorkerRuntime } from "./runtime.js"
import { DEMO_PEOPLE, seedDemo } from "./seed.js"
async function main(): Promise<void> {
const env = loadAppEnv("worker")
if (env.production) {
throw new PlatformEnvError(
"NODE_ENV",
"the demo data is for development: it is refused in a production run (NODE_ENV is neither development nor test)",
)
}
const runtime = buildWorkerRuntime(env, quietObservability(env))
try {
const summary = await seedDemo({ data: runtime.data, registry: runtime.registry, container: runtime.container })
const base = env.deployment.CONUSAI_PUBLIC_URL ?? "http://127.0.0.1:3000"
console.info(
summary.created.length === 0
? "seed: the demo data was already there"
: `seed: created ${summary.created.join("; ")}`,
)
for (const person of DEMO_PEOPLE) {
console.info(`seed: ${person.name}: ${base}/auth/dev-login?email=${person.email}`)
}
} finally {
await runtime.close()
}
}
main().then(
() => process.exit(0),
(error: unknown) => {
console.error(`seed: ${error instanceof Error ? error.message : String(error)}`)
process.exit(1)
},
)