mirror of
https://github.com/nicetry247/offlineacademy.git
synced 2026-07-26 11:58:44 +00:00
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { mkdir, rm, writeFile } from 'fs/promises'
|
|
import { join } from 'path'
|
|
import { prisma } from '@/lib/prisma'
|
|
import { scanCoursesDirectory } from '@/lib/scanner'
|
|
|
|
function assert(condition: unknown, message: string) {
|
|
if (!condition) throw new Error(message)
|
|
}
|
|
|
|
async function main() {
|
|
const root = '/tmp/offlineacademy-stale-scan'
|
|
const coursesRoot = join(root, 'My_Courses')
|
|
const coursePath = join(coursesRoot, 'Stale Course', '01 - Module')
|
|
|
|
await rm(root, { recursive: true, force: true })
|
|
await mkdir(coursePath, { recursive: true })
|
|
await writeFile(join(coursePath, '01 - Lesson.mp4'), '')
|
|
|
|
await prisma.setting.upsert({
|
|
where: { key: 'coursesRoot' },
|
|
update: { value: coursesRoot },
|
|
create: { key: 'coursesRoot', value: coursesRoot },
|
|
})
|
|
|
|
await scanCoursesDirectory({ maxConcurrency: 1, maxLessonsPerCourse: 10, maxModulesPerCourse: 5 })
|
|
|
|
const before = await prisma.course.count()
|
|
assert(before === 1, `expected 1 course before delete, got ${before}`)
|
|
|
|
await rm(join(coursesRoot, 'Stale Course'), { recursive: true, force: true })
|
|
|
|
await scanCoursesDirectory({ maxConcurrency: 1, maxLessonsPerCourse: 10, maxModulesPerCourse: 5 })
|
|
|
|
const after = await prisma.course.count()
|
|
assert(after === 0, `expected 0 courses after delete, got ${after}`)
|
|
|
|
console.log('stale course deletion verification passed')
|
|
}
|
|
|
|
main()
|
|
.catch((error) => {
|
|
console.error(error)
|
|
process.exitCode = 1
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect()
|
|
})
|