Files
2025-06-22 17:12:32 -04:00

72 lines
2.0 KiB
JavaScript

const { PrismaClient } = require ('./generated/prisma');
//const { PrismaClient } = require ('@prisma/client');
const { faker } = require ( '@faker-js/faker');
// import { faker } from '@faker-js/faker'; //../generated/prisma" @prisma/client
// import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function main() {
await prisma.user.deleteMany();
await prisma.post.deleteMany();
await prisma.profile.deleteMany();
// Create 5 users
const users = [];
for (let i = 0; i < 5; i++) {
const user = await prisma.user.create({
data: {
userId: faker.string.uuid(),
name: faker.person.fullName(),
username: faker.internet.username(),
email: faker.internet.email(),
avatar: faker.image.avatar(),
password: faker.internet.password(),
birthdate: faker.date.birthdate(),
registeredAt: faker.date.past(),
role: i === 0 ? 'ADMIN' : i === 1 ? 'EDITOR' : 'USER',
},
});
users.push(user);
console.log(`User created: ${user.username}`);
}
for (const user of users) {
const postCount = faker.number.int({ min: 2, max: 4 });
for (let i = 0; i < postCount; i++) {
const post = await prisma.post.create({
data: {
title: faker.lorem.sentence(),
content: faker.lorem.paragraphs(3),
published: faker.datatype.boolean(),
authorId: user.id,
},
});
console.log(`Post created: ${post.title}`);
}
}
for (const user of users) {
const profile = await prisma.profile.create({
data: {
bio: faker.person.bio(),
avatar: faker.image.avatar(),
//userId: user.id,
userId: user.userId,
},
});
console.log(`Profile created for user: ${user.username}, Bio: ${profile.bio}`);
}
}
main()
.then(async () => {
await prisma.$disconnect();
})
.catch(async (e) => {
console.error(e);
await prisma.$disconnect();
process.exit(1);
});