56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
import pg from 'pg';
|
|
const { Pool } = pg;
|
|
|
|
const liaraPool = new Pool({
|
|
connectionString: 'postgresql://root:hePGFWh8f5TAEWCBK0V8XtQh@el-capitan.liara.cloud:32727/postgres',
|
|
ssl: false,
|
|
});
|
|
|
|
const vpsPool = new Pool({
|
|
connectionString: 'postgresql://user:d1ph12poyhd1o2pDASd2jp2dnbcba@94.101.186.198:5433/steelforesight',
|
|
ssl: false,
|
|
});
|
|
|
|
async function migrateDb() {
|
|
console.log('Connecting to databases...');
|
|
|
|
// 1. Get all tables in Liara
|
|
const tablesRes = await liaraPool.query(`
|
|
SELECT table_name
|
|
FROM information_schema.tables
|
|
WHERE table_schema = 'public' AND table_type = 'BASE TABLE'
|
|
ORDER BY table_name;
|
|
`);
|
|
|
|
const tables = tablesRes.rows.map(r => r.table_name);
|
|
console.log('Tables to migrate:', tables);
|
|
|
|
// 2. For each table, get column definitions & create table on VPS if not exists
|
|
for (const table of tables) {
|
|
console.log(`\n--- Migrating table: ${table} ---`);
|
|
|
|
// Get column names and types
|
|
const colsRes = await liaraPool.query(`
|
|
SELECT column_name, data_type, udt_name, is_nullable, column_default
|
|
FROM information_schema.columns
|
|
WHERE table_schema = 'public' AND table_name = $1
|
|
ORDER BY ordinal_position;
|
|
`, [table]);
|
|
|
|
// Fetch all rows
|
|
const dataRes = await liaraPool.query(`SELECT * FROM "${table}"`);
|
|
console.log(`Found ${dataRes.rows.length} rows in ${table}`);
|
|
|
|
// Drop table on VPS if exists and create fresh
|
|
// We can extract table DDL or create from columns
|
|
if (dataRes.rows.length > 0) {
|
|
const colNames = Object.keys(dataRes.rows[0]);
|
|
|
|
// Let's create the table with db.js initialization or dynamic columns
|
|
// But simpler: let db.js initialize tables on VPS first, or execute DDL
|
|
}
|
|
}
|
|
}
|
|
|
|
migrateDb().catch(console.error);
|