import { PrismaClient } from '@prisma/client';
import bcrypt from 'bcryptjs';

async function createTestUsers() {
    const prisma = new PrismaClient();

    // Create a regular user
    const user1Email = 'user1@gymflow.ai';
    const user1Password = 'user1pass';
    const hashedUser1Password = await bcrypt.hash(user1Password, 10);
    await prisma.user.upsert({
        where: { email: user1Email },
        update: { password: hashedUser1Password },
        create: {
            email: user1Email,
            password: hashedUser1Password,
            role: 'USER',
            profile: { create: { weight: 70 } },
        },
    });

    // Create another regular user
    const user2Email = 'user2@gymflow.ai';
    const user2Password = 'user2pass';
    const hashedUser2Password = await bcrypt.hash(user2Password, 10);
    await prisma.user.upsert({
        where: { email: user2Email },
        update: { password: hashedUser2Password },
        create: {
            email: user2Email,
            password: hashedUser2Password,
            role: 'USER',
            profile: { create: { weight: 75 } },
        },
    });

    // Create a user that will be blocked
    const blockedUserEmail = 'blocked@gymflow.ai';
    const blockedUserPassword = 'blockedpass';
    const hashedBlockedUserPassword = await bcrypt.hash(blockedUserPassword, 10);
    await prisma.user.upsert({
        where: { email: blockedUserEmail },
        update: { password: hashedBlockedUserPassword, isBlocked: true },
        create: {
            email: blockedUserEmail,
            password: hashedBlockedUserPassword,
            role: 'USER',
            isBlocked: true,
            profile: { create: { weight: 80 } },
        },
    });

    console.log('Test users created or updated successfully.');
    await prisma.$disconnect();
}

createTestUsers()
    .catch((e) => {
        console.error(e);
        process.exit(1);
    })
    .finally(async () => {
        // This script is meant to be run once to seed data, so we don't need to keep it running.
    });
