steelforesight/panel/scripts/migrate-db.js

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);