fix: several fixes

This commit is contained in:
kilyabin
2026-03-05 14:59:44 +04:00
parent c43bed396e
commit 67a7374b1a
8 changed files with 389 additions and 41 deletions

View File

@@ -251,6 +251,7 @@ export function getAllTeachers(): TeachersData {
}
}
console.log(`[Database] getAllTeachers: found ${Object.keys(teachers).length} teachers`)
return teachers
}
@@ -592,6 +593,48 @@ function migrateFromJSON(): void {
console.error('Error hashing default password:', err)
}
}
// Мигрируем преподавателей из teachers.ts, если БД пустая
const teachersCount = database.prepare('SELECT COUNT(*) as count FROM teachers').get() as { count: number }
if (teachersCount.count === 0) {
try {
// Пытаемся импортировать преподавателей из teachers.ts
const possiblePaths = [
path.join(process.cwd(), 'src/shared/data/teachers.ts'),
path.join(process.cwd(), '.next/standalone/src/shared/data/teachers.ts'),
path.join(process.cwd(), 'teachers.ts')
]
for (const filePath of possiblePaths) {
if (fs.existsSync(filePath)) {
console.log(`Migrating teachers from ${filePath}...`)
// Читаем файл и извлекаем JSON массив
const fileContents = fs.readFileSync(filePath, 'utf8')
const jsonMatch = fileContents.match(/export const teachers = (\[[\s\S]*?\])/)
if (jsonMatch && jsonMatch[1]) {
const teachersArray = JSON.parse(jsonMatch[1]) as Array<{ name: string }>
const insertStmt = database.prepare('INSERT INTO teachers (id, parseId, name) VALUES (?, ?, ?)')
const transaction = database.transaction((teachers: Array<{ name: string }>) => {
teachers.forEach((teacher, index) => {
if (teacher.name) {
// Используем индекс как parseId, так как в teachers.ts нет parseId
const id = String(index + 1)
insertStmt.run(id, index + 1, teacher.name)
}
})
})
transaction(teachersArray)
console.log(`Teachers migrated from teachers.ts: ${teachersArray.length} teachers`)
break
}
}
}
} catch (error) {
console.error('Error migrating teachers from teachers.ts:', error)
}
}
}
// Экспортируем функцию для закрытия соединения (полезно для тестов)