// Quick database viewer - shows all content and exits
// Usage: node scripts/view-db.js

import Database from 'better-sqlite3';
import path from 'path';
import fs from 'fs';

const dbPath = path.join(process.cwd(), 'data', 'users.db');

if (!fs.existsSync(dbPath)) {
  console.error('❌ Database not found at:', dbPath);
  process.exit(1);
}

const db = new Database(dbPath);

console.log('📊 Database Content Viewer\n');
console.log('Database path:', dbPath);
console.log('='.repeat(80));

// Get all tables
const tables = db.prepare(`
  SELECT name FROM sqlite_master 
  WHERE type='table' AND name NOT LIKE 'sqlite_%'
`).all();

console.log('\n📋 Available Tables:');
tables.forEach((table, index) => {
  console.log(`  ${index + 1}. ${table.name}`);
});

// Show content for each table
tables.forEach((table) => {
  const tableName = table.name;
  
  // Get row count
  const count = db.prepare(`SELECT COUNT(*) as total FROM ${tableName}`).get();
  
  console.log('\n' + '='.repeat(80));
  console.log(`\n📊 Table: ${tableName} (${count.total} rows)`);
  console.log('-'.repeat(80));
  
  // Get table schema
  const schema = db.prepare(`PRAGMA table_info(${tableName})`).all();
  console.log('\n📐 Schema:');
  console.table(schema.map(col => ({
    column: col.name,
    type: col.type,
    nullable: col.notnull === 0 ? 'YES' : 'NO',
    default: col.dflt_value || '-'
  })));
  
  // Get all data
  const data = db.prepare(`SELECT * FROM ${tableName}`).all();
  
  if (data.length === 0) {
    console.log('\n📭 No data in this table.');
  } else {
    console.log(`\n📄 Data (showing all ${data.length} rows):`);
    console.table(data);
    
    // If there are many rows, also show a summary
    if (data.length > 10) {
      console.log(`\n💡 Tip: Showing all ${data.length} rows. Use the interactive script for filtering.`);
    }
  }
});

console.log('\n' + '='.repeat(80));
console.log('\n✅ Done! Use `node scripts/db-access.js` for interactive queries.\n');

db.close();

