Set logging is now a united. Sporadic set table removed.
This commit is contained in:
21
server/src/scripts/backupSporadicSets.ts
Normal file
21
server/src/scripts/backupSporadicSets.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function backup() {
|
||||
try {
|
||||
console.log('Starting backup...');
|
||||
const sporadicSets = await prisma.sporadicSet.findMany();
|
||||
const backupPath = path.join(__dirname, '../../sporadic_backup.json');
|
||||
fs.writeFileSync(backupPath, JSON.stringify(sporadicSets, null, 2));
|
||||
console.log(`Backed up ${sporadicSets.length} sporadic sets to ${backupPath}`);
|
||||
} catch (error) {
|
||||
console.error('Backup failed:', error);
|
||||
} finally {
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
backup();
|
||||
77
server/src/scripts/restoreSporadicSets.ts
Normal file
77
server/src/scripts/restoreSporadicSets.ts
Normal file
@@ -0,0 +1,77 @@
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
async function restore() {
|
||||
try {
|
||||
const backupPath = path.join(__dirname, '../../sporadic_backup.json');
|
||||
if (!fs.existsSync(backupPath)) {
|
||||
console.error('Backup file not found!');
|
||||
return;
|
||||
}
|
||||
|
||||
const sporadicSets = JSON.parse(fs.readFileSync(backupPath, 'utf-8'));
|
||||
console.log(`Found ${sporadicSets.length} sporadic sets to restore.`);
|
||||
|
||||
for (const set of sporadicSets) {
|
||||
const date = new Date(set.timestamp);
|
||||
const startOfDay = new Date(date);
|
||||
startOfDay.setHours(0, 0, 0, 0);
|
||||
const endOfDay = new Date(date);
|
||||
endOfDay.setHours(23, 59, 59, 999);
|
||||
|
||||
// Find or create a QUICK_LOG session for this day
|
||||
let session = await prisma.workoutSession.findFirst({
|
||||
where: {
|
||||
userId: set.userId,
|
||||
type: 'QUICK_LOG',
|
||||
startTime: {
|
||||
gte: startOfDay,
|
||||
lte: endOfDay
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!session) {
|
||||
session = await prisma.workoutSession.create({
|
||||
data: {
|
||||
userId: set.userId,
|
||||
startTime: startOfDay, // Use start of day as session start
|
||||
type: 'QUICK_LOG',
|
||||
note: 'Daily Quick Log'
|
||||
}
|
||||
});
|
||||
console.log(`Created new QUICK_LOG session for ${startOfDay.toISOString()}`);
|
||||
}
|
||||
|
||||
// Create the WorkoutSet
|
||||
await prisma.workoutSet.create({
|
||||
data: {
|
||||
sessionId: session.id,
|
||||
exerciseId: set.exerciseId,
|
||||
order: 0, // Order doesn't matter much for sporadic sets, or we could increment
|
||||
weight: set.weight,
|
||||
reps: set.reps,
|
||||
distanceMeters: set.distanceMeters,
|
||||
durationSeconds: set.durationSeconds,
|
||||
height: set.height,
|
||||
bodyWeightPercentage: set.bodyWeightPercentage,
|
||||
side: set.side,
|
||||
timestamp: new Date(set.timestamp),
|
||||
completed: true
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
console.log('Restoration complete!');
|
||||
|
||||
} catch (error) {
|
||||
console.error('Restoration failed:', error);
|
||||
} finally {
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
restore();
|
||||
Reference in New Issue
Block a user