fix(db): fix configuration loading
This commit is contained in:
@@ -120,6 +120,7 @@
|
||||
"snakecase-keys": "^9.0.2",
|
||||
"tiktoken": "^1.0.22",
|
||||
"uuid": "^13.0.0",
|
||||
"zod": "^4.1.12",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/pg": "^8.15.6",
|
||||
@@ -151,7 +152,7 @@
|
||||
"react-dom": "^19.1.1",
|
||||
"tailwind-merge": "^3.3.1",
|
||||
"tw-animate-css": "^1.3.6",
|
||||
"zod": "^3.25.76",
|
||||
"zod": "^4.1.12",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@basango/tsconfig": "workspace:*",
|
||||
@@ -2466,8 +2467,6 @@
|
||||
|
||||
"@babel/traverse--for-generate-function-map/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="],
|
||||
|
||||
"@basango/ui/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
|
||||
|
||||
"@commitlint/format/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
||||
|
||||
"@commitlint/load/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="],
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
"pg": "^8.16.3",
|
||||
"snakecase-keys": "^9.0.2",
|
||||
"tiktoken": "^1.0.22",
|
||||
"uuid": "^13.0.0"
|
||||
"uuid": "^13.0.0",
|
||||
"zod": "^4.1.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/pg": "^8.15.6",
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
import { createEnvAccessor } from "@devscast/config";
|
||||
import { drizzle } from "drizzle-orm/node-postgres";
|
||||
import { Pool } from "pg";
|
||||
|
||||
import { env } from "@/config";
|
||||
import * as schema from "@/schema";
|
||||
|
||||
const isDevelopment = process.env.NODE_ENV === "development";
|
||||
|
||||
const env = createEnvAccessor(["BASANGO_DATABASE_URL"] as const);
|
||||
|
||||
const pool = new Pool({
|
||||
allowExitOnIdle: true,
|
||||
connectionString: env("BASANGO_DATABASE_URL"),
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import path from "node:path";
|
||||
|
||||
import { loadConfig } from "@devscast/config";
|
||||
import { z } from "zod";
|
||||
|
||||
const PROJECT_DIR = path.resolve(__dirname, "../../");
|
||||
|
||||
export const { env, config } = loadConfig({
|
||||
env: {
|
||||
knownKeys: [
|
||||
"BASANGO_DATABASE_URL",
|
||||
"BASANGO_SOURCE_DATABASE_HOST",
|
||||
"BASANGO_SOURCE_DATABASE_USER",
|
||||
"BASANGO_SOURCE_DATABASE_PASS",
|
||||
"BASANGO_SOURCE_DATABASE_NAME",
|
||||
] as const,
|
||||
path: path.join(PROJECT_DIR, ".env"),
|
||||
},
|
||||
schema: z.object({}),
|
||||
});
|
||||
@@ -1,39 +1,9 @@
|
||||
#!/usr/bin/env bun
|
||||
import { stdin as input, stdout as output } from "node:process";
|
||||
import { createInterface } from "node:readline/promises";
|
||||
|
||||
import { createEnvAccessor } from "@devscast/config";
|
||||
|
||||
import { env } from "@/config";
|
||||
import { Engine } from "@/importer";
|
||||
|
||||
const env = createEnvAccessor([
|
||||
"BASANGO_SOURCE_DATABASE_HOST",
|
||||
"BASANGO_SOURCE_DATABASE_USER",
|
||||
"BASANGO_SOURCE_DATABASE_PASS",
|
||||
"BASANGO_SOURCE_DATABASE_NAME",
|
||||
"BASANGO_DATABASE_URL",
|
||||
]);
|
||||
|
||||
async function askConfirmation(question: string, def = false) {
|
||||
const rl = createInterface({ input, output });
|
||||
const suffix = def ? "[Y/n]" : "[y/N]";
|
||||
const answer = await rl.question(`${question} ${suffix} `);
|
||||
rl.close();
|
||||
const v = String(answer || "")
|
||||
.trim()
|
||||
.toLowerCase();
|
||||
if (v === "y" || v === "yes") return true;
|
||||
if (v === "n" || v === "no") return false;
|
||||
return def;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const ok = await askConfirmation("Do you want to continue?", false);
|
||||
if (!ok) {
|
||||
console.warn("Process aborted");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const engine = new Engine(
|
||||
{
|
||||
database: env("BASANGO_SOURCE_DATABASE_NAME"),
|
||||
@@ -54,6 +24,7 @@ async function main() {
|
||||
console.log(`Imported ${count} records into ${t} table.`);
|
||||
}
|
||||
console.log("Import completed successfully");
|
||||
process.exit(0);
|
||||
} finally {
|
||||
await engine.close();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
"react-dom": "^19.1.1",
|
||||
"tailwind-merge": "^3.3.1",
|
||||
"tw-animate-css": "^1.3.6",
|
||||
"zod": "^3.25.76"
|
||||
"zod": "^4.1.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@basango/tsconfig": "workspace:*",
|
||||
|
||||
Reference in New Issue
Block a user