47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import pg from 'pg'
|
|
import env from '#start/env'
|
|
|
|
const { Client } = pg
|
|
|
|
async function setupDatabase() {
|
|
const client = new Client({
|
|
host: env.get('DB_HOST'),
|
|
port: env.get('DB_PORT'),
|
|
user: env.get('DB_USER'),
|
|
password: env.get('DB_PASSWORD'),
|
|
database: 'postgres',
|
|
})
|
|
|
|
try {
|
|
await client.connect()
|
|
console.log('Connected to PostgreSQL server')
|
|
|
|
const dbName = env.get('DB_DATABASE')
|
|
const checkDbQuery = `SELECT 1 FROM pg_database WHERE datname = $1`
|
|
const result = await client.query(checkDbQuery, [dbName])
|
|
|
|
if (result.rows.length === 0) {
|
|
console.log(`Database "${dbName}" does not exist. Creating...`)
|
|
await client.query(`CREATE DATABASE ${dbName}`)
|
|
console.log(`Database "${dbName}" created successfully`)
|
|
} else {
|
|
console.log(`Database "${dbName}" already exists`)
|
|
}
|
|
} catch (error) {
|
|
console.error('Error setting up database:', error)
|
|
throw error
|
|
} finally {
|
|
await client.end()
|
|
}
|
|
}
|
|
|
|
setupDatabase()
|
|
.then(() => {
|
|
console.log('Database setup completed successfully')
|
|
process.exit(0)
|
|
})
|
|
.catch((error) => {
|
|
console.error('Database setup failed:', error)
|
|
process.exit(1)
|
|
})
|