mirror of
https://github.com/jjbrunton/Sauci.git
synced 2026-10-31 10:19:43 +00:00
75 lines
2.2 KiB
JavaScript
75 lines
2.2 KiB
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Run content seed against non-production database using Node.js
|
|
*
|
|
* Usage:
|
|
* export NONPROD_DATABASE_PASSWORD="your-database-password"
|
|
* node scripts/run-seed-nonprod.mjs
|
|
*
|
|
* Get the password from: Supabase Dashboard > Settings > Database > Database password
|
|
*/
|
|
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
import pg from 'pg';
|
|
|
|
const { Client } = pg;
|
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
// Non-production database connection
|
|
const NONPROD_PASSWORD = process.env.NONPROD_DATABASE_PASSWORD;
|
|
|
|
if (!NONPROD_PASSWORD) {
|
|
console.error('Error: NONPROD_DATABASE_PASSWORD environment variable is not set');
|
|
console.error('Get it from: Supabase Dashboard > Settings > Database > Database password');
|
|
process.exit(1);
|
|
}
|
|
|
|
const connectionString = `postgresql://postgres.itbzhrvlgvdmzbnhzhyx:${NONPROD_PASSWORD}@aws-0-eu-west-1.pooler.supabase.com:6543/postgres`;
|
|
|
|
async function main() {
|
|
console.log('=== Running content seed against Sauci Non-Production ===\n');
|
|
|
|
// Read the seed file
|
|
const seedFile = path.join(__dirname, '../apps/supabase/content-seed.sql');
|
|
|
|
if (!fs.existsSync(seedFile)) {
|
|
console.error(`Error: Seed file not found at ${seedFile}`);
|
|
console.error('Run the export from production first.');
|
|
process.exit(1);
|
|
}
|
|
|
|
const sql = fs.readFileSync(seedFile, 'utf8');
|
|
console.log(`Loaded seed file (${sql.split('\n').length} lines)`);
|
|
|
|
const client = new Client({ connectionString });
|
|
|
|
try {
|
|
console.log('Connecting to non-production database...');
|
|
await client.connect();
|
|
console.log('Connected!\n');
|
|
|
|
console.log('Executing seed SQL...');
|
|
await client.query(sql);
|
|
|
|
console.log('\n=== Content sync complete! ===');
|
|
|
|
// Verify the data
|
|
console.log('\nVerifying data:');
|
|
const tables = ['categories', 'topics', 'question_packs', 'dare_packs', 'questions', 'dares', 'pack_topics'];
|
|
for (const table of tables) {
|
|
const result = await client.query(`SELECT COUNT(*) as count FROM ${table}`);
|
|
console.log(` - ${table}: ${result.rows[0].count} rows`);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('\nError:', error.message);
|
|
process.exit(1);
|
|
} finally {
|
|
await client.end();
|
|
}
|
|
}
|
|
|
|
main();
|