script para automatizar a extensão do banco de dados
This commit is contained in:
47
scripts/postgres/enable-extensions.ts
Normal file
47
scripts/postgres/enable-extensions.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Script to initialize database extensions before running migrations
|
||||
* This ensures pgcrypto extension is available for gen_random_bytes()
|
||||
*/
|
||||
|
||||
import { config } from 'dotenv';
|
||||
import { drizzle } from 'drizzle-orm/node-postgres';
|
||||
import { Pool } from 'pg';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
// 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();
|
||||
Reference in New Issue
Block a user