75 lines
1.7 KiB
TypeScript
75 lines
1.7 KiB
TypeScript
import { auth } from '@lib/auth';
|
|
import { PrismaPg } from '@prisma/adapter-pg';
|
|
import { PrismaClient } from '../src/generated/prisma/client.js';
|
|
import { settingsData, userData } from './data.js';
|
|
|
|
const adapter = new PrismaPg({
|
|
connectionString: process.env.DATABASE_URL!,
|
|
});
|
|
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
async function main() {
|
|
console.log('🌱 Seeding database...');
|
|
let admin;
|
|
|
|
// check mail exists
|
|
const mailExists = await prisma.user.findFirst({
|
|
where: {
|
|
email: 'luu.dat.tham@gmail.com',
|
|
},
|
|
});
|
|
if (!mailExists) {
|
|
// add admin user
|
|
admin = await auth.api.createUser({
|
|
body: {
|
|
email: 'luu.dat.tham@gmail.com',
|
|
password: 'Th@m!S@m!040390',
|
|
name: 'Sam Liu',
|
|
role: 'admin',
|
|
},
|
|
});
|
|
}
|
|
|
|
console.log('---------------Created admin user-----------------');
|
|
|
|
userData.map(async (user) => {
|
|
await auth.api.createUser({
|
|
body: {
|
|
email: user.email,
|
|
password: 'Th@m!S@m!040390',
|
|
name: user.name,
|
|
role: 'user',
|
|
},
|
|
});
|
|
});
|
|
|
|
console.log('---------------Created member user-----------------');
|
|
await prisma.setting.deleteMany();
|
|
|
|
const listSettings = [
|
|
...settingsData,
|
|
{
|
|
key: admin ? (admin?.user?.id as string) : (mailExists?.id as string),
|
|
value: '{"language": "en"}',
|
|
description: 'User settings',
|
|
relation: 'user',
|
|
},
|
|
];
|
|
|
|
await prisma.setting.createMany({
|
|
data: listSettings,
|
|
skipDuplicates: true,
|
|
});
|
|
console.log('---------------Created settings-----------------');
|
|
}
|
|
|
|
main()
|
|
.catch((e) => {
|
|
console.error('❌ Error seeding database:', e);
|
|
process.exit(1);
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect();
|
|
});
|