99 lines
2.9 KiB
JavaScript
99 lines
2.9 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Скрипт для проверки базы данных преподавателей
|
|
* Запуск: node scripts/test-teachers-db.js
|
|
*/
|
|
|
|
const path = require('path');
|
|
const fs = require('fs');
|
|
|
|
// Определяем директорию базы данных
|
|
function getDatabaseDir() {
|
|
if (process.env.DATABASE_DIR) {
|
|
return process.env.DATABASE_DIR;
|
|
}
|
|
|
|
const cwd = process.cwd();
|
|
console.log(`Current working directory: ${cwd}`);
|
|
|
|
if (cwd.includes('.next/standalone')) {
|
|
const standaloneMatch = cwd.match(/^(.+?)\/\.next\/standalone/);
|
|
if (standaloneMatch && standaloneMatch[1]) {
|
|
return standaloneMatch[1];
|
|
}
|
|
return path.resolve(cwd, '..', '..');
|
|
}
|
|
|
|
if (fs.existsSync('/opt/kspguti-schedule')) {
|
|
return '/opt/kspguti-schedule';
|
|
}
|
|
|
|
return cwd;
|
|
}
|
|
|
|
const DATABASE_DIR = getDatabaseDir();
|
|
const DB_PATH = path.join(DATABASE_DIR, 'db', 'schedule-app.db');
|
|
|
|
console.log(`Database directory: ${DATABASE_DIR}`);
|
|
console.log(`Database path: ${DB_PATH}`);
|
|
console.log(`Database exists: ${fs.existsSync(DB_PATH)}`);
|
|
|
|
if (!fs.existsSync(DB_PATH)) {
|
|
console.error('Database file does not exist!');
|
|
process.exit(1);
|
|
}
|
|
|
|
// Проверяем права доступа
|
|
try {
|
|
fs.accessSync(DB_PATH, fs.constants.R_OK | fs.constants.W_OK);
|
|
console.log('Database file is readable and writable');
|
|
} catch (err) {
|
|
console.error('Database file permissions error:', err.message);
|
|
process.exit(1);
|
|
}
|
|
|
|
// Подключаемся к базе данных
|
|
const Database = require('better-sqlite3');
|
|
const db = new Database(DB_PATH);
|
|
|
|
// Проверяем таблицу teachers
|
|
console.log('\n=== Teachers Table ===');
|
|
const teachersCount = db.prepare('SELECT COUNT(*) as count FROM teachers').get();
|
|
console.log(`Total teachers in database: ${teachersCount.count}`);
|
|
|
|
if (teachersCount.count > 0) {
|
|
const teachers = db.prepare('SELECT id, parseId, name FROM teachers LIMIT 10').all();
|
|
console.log('First 10 teachers:');
|
|
teachers.forEach((t, i) => {
|
|
console.log(` ${i + 1}. [${t.id}] ${t.name} (parseId: ${t.parseId})`);
|
|
});
|
|
} else {
|
|
console.log('Teachers table is EMPTY!');
|
|
}
|
|
|
|
// Проверяем таблицу groups
|
|
console.log('\n=== Groups Table ===');
|
|
const groupsCount = db.prepare('SELECT COUNT(*) as count FROM groups').get();
|
|
console.log(`Total groups in database: ${groupsCount.count}`);
|
|
|
|
if (groupsCount.count > 0) {
|
|
const groups = db.prepare('SELECT id, parseId, name, course FROM groups LIMIT 10').all();
|
|
console.log('First 10 groups:');
|
|
groups.forEach((g, i) => {
|
|
console.log(` ${i + 1}. [${g.id}] ${g.name} (parseId: ${g.parseId}, course: ${g.course})`);
|
|
});
|
|
}
|
|
|
|
// Проверяем таблицу settings
|
|
console.log('\n=== Settings Table ===');
|
|
const settings = db.prepare('SELECT value FROM settings WHERE key = ?').get('app');
|
|
if (settings) {
|
|
console.log('App settings:', settings.value);
|
|
} else {
|
|
console.log('No app settings found');
|
|
}
|
|
|
|
db.close();
|
|
console.log('\nDone!');
|