![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.quebec/private_html/scripts/ |
import { PrismaClient } from '@prisma/client';
import fs from 'fs';
import path from 'path';
import { hash } from 'bcryptjs';
const prisma = new PrismaClient();
function isValidDate(date: any): boolean {
return date instanceof Date && !isNaN(date.getTime());
}
async function migrateData() {
try {
// Read existing data
const usersFile = path.join(process.cwd(), 'users.json');
const registrationsFile = path.join(process.cwd(), 'registrations.json');
// Migrate users
if (fs.existsSync(usersFile)) {
const users = JSON.parse(fs.readFileSync(usersFile, 'utf8'));
for (const user of users) {
// Hash password if not already hashed
const hashedPassword = user.password.startsWith('$2')
? user.password
: await hash(user.password, 10);
await prisma.user.create({
data: {
id: user.id,
email: user.email,
name: user.name,
password: hashedPassword,
role: user.role || 'user',
}
});
}
console.log('Users migrated successfully');
}
// Migrate registrations
if (fs.existsSync(registrationsFile)) {
const registrations = JSON.parse(fs.readFileSync(registrationsFile, 'utf8'));
for (const registration of registrations) {
// Create file uploads first
const fileUploads = [];
if (registration.uploadedFiles) {
for (const file of registration.uploadedFiles) {
const fileUpload = await prisma.fileUpload.create({
data: {
originalName: file.originalName,
storedName: file.newName,
mimeType: file.mimeType || 'application/octet-stream',
size: file.size || 0,
path: file.path,
}
});
fileUploads.push(fileUpload);
}
}
// Create registration
await prisma.registration.create({
data: {
id: registration.id,
userId: registration.userId,
firstName: registration.firstName,
lastName: registration.lastName,
email: registration.email,
phone: registration.phone,
birthDate: isValidDate(registration.birthDate) ? new Date(registration.birthDate) : new Date('2000-01-01'),
relationship: registration.relationship,
message: registration.message,
address: registration.address,
detaineeInfo: registration.detaineeInfo,
preferredLanguage: registration.preferredLanguage,
preferredContactMethod: registration.preferredContactMethod,
documents: registration.documents,
status: registration.status || 'pending',
createdAt: registration.date ? new Date(registration.date) : new Date(),
}
});
// Update file uploads with registration ID
if (fileUploads.length > 0) {
await Promise.all(fileUploads.map(file =>
prisma.fileUpload.update({
where: { id: file.id },
data: { registrationId: registration.id }
})
));
}
}
console.log('Registrations migrated successfully');
}
console.log('Migration completed successfully');
} catch (error) {
console.error('Migration failed:', error);
process.exit(1);
} finally {
await prisma.$disconnect();
}
}
migrateData();