54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { prisma } from '@/lib/prisma';
|
|
|
|
async function resetDatabase() {
|
|
try {
|
|
console.log('Starting database reset...');
|
|
|
|
// Clear all watch segments
|
|
await prisma.videoWatchSegment.deleteMany({});
|
|
console.log('✓ Cleared VideoWatchSegment records');
|
|
|
|
// Clear all progress records
|
|
await prisma.videoProgress.deleteMany({});
|
|
console.log('✓ Cleared VideoProgress records');
|
|
|
|
// Get all playlists with their videos
|
|
const playlists = await prisma.playlist.findMany({
|
|
include: { videos: { orderBy: { index: 'asc' } } },
|
|
});
|
|
|
|
// For each playlist, unlock first video, lock the rest
|
|
for (const playlist of playlists) {
|
|
if (playlist.videos.length > 0) {
|
|
// Unlock first video
|
|
await prisma.video.updateMany({
|
|
where: { playlistId: playlist.id, index: 0 },
|
|
data: { locked: false },
|
|
});
|
|
|
|
// Lock all other videos
|
|
await prisma.video.updateMany({
|
|
where: { playlistId: playlist.id, index: { gt: 0 } },
|
|
data: { locked: true },
|
|
});
|
|
|
|
console.log(`✓ Set unlock status for playlist: ${playlist.title}`);
|
|
}
|
|
}
|
|
|
|
console.log('✓ Database reset complete!');
|
|
console.log('\nSummary:');
|
|
console.log('- All watch segments cleared');
|
|
console.log('- All progress records cleared');
|
|
console.log('- First video in each playlist unlocked');
|
|
console.log('- Remaining videos locked (require 80% completion of previous video)');
|
|
|
|
process.exit(0);
|
|
} catch (error) {
|
|
console.error('Error during reset:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
resetDatabase();
|