Hakakses dan verifikasi akun
This commit is contained in:
@@ -1,14 +1,16 @@
|
||||
// Quick database access script
|
||||
// Usage: node scripts/db-access.js
|
||||
|
||||
const Database = require('better-sqlite3');
|
||||
const path = require('path');
|
||||
const readline = require('readline');
|
||||
import Database from 'better-sqlite3';
|
||||
import path from 'path';
|
||||
import readline from 'readline';
|
||||
import fs from 'fs';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const dbPath = path.join(process.cwd(), 'data', 'users.db');
|
||||
|
||||
// Check if database exists
|
||||
const fs = require('fs');
|
||||
if (!fs.existsSync(dbPath)) {
|
||||
console.error('❌ Database not found at:', dbPath);
|
||||
process.exit(1);
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
// 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();
|
||||
|
||||
Reference in New Issue
Block a user