46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import { config } from "dotenv";
|
|
import { drizzle } from "drizzle-orm/node-postgres";
|
|
import * as fs from "fs";
|
|
import * as path from "path";
|
|
import { Pool } from "pg";
|
|
|
|
// Load environment variables from .env
|
|
config();
|
|
|
|
async function initDatabase() {
|
|
const databaseUrl = process.env.DATABASE_URL;
|
|
|
|
if (!databaseUrl) {
|
|
console.error("DATABASE_URL environment variable is required");
|
|
process.exit(1);
|
|
}
|
|
|
|
const pool = new Pool({ connectionString: databaseUrl });
|
|
const db = drizzle(pool);
|
|
|
|
try {
|
|
console.log("🔧 Initializing database extensions...");
|
|
|
|
// Read and execute init.sql as a single query
|
|
const initSqlPath = path.join(
|
|
process.cwd(),
|
|
"scripts",
|
|
"postgres",
|
|
"init.sql"
|
|
);
|
|
const initSql = fs.readFileSync(initSqlPath, "utf-8");
|
|
|
|
console.log("Executing init.sql...");
|
|
await db.execute(initSql);
|
|
|
|
console.log("✅ Database initialization completed");
|
|
} catch (error) {
|
|
console.error("❌ Database initialization failed:", error);
|
|
process.exit(1);
|
|
} finally {
|
|
await pool.end();
|
|
}
|
|
}
|
|
|
|
initDatabase();
|