Files
kspguti-schedule/scripts/test-teachers-db.js
2026-03-05 14:59:44 +04:00

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