nestjs_backend/prisma/seed.ts
2022-08-18 11:45:49 +09:00

133 lines
2.4 KiB
TypeScript

import { Prisma, PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
//필요 설치 : npm install -D typescript ts-node @types/node
//Project 디렉토리에서 실행: npx prisma db seed
const userDatas: Prisma.UserCreateInput[] = [
{
email: 'choi.jh@idcjp.jp',
name: '최준흠',
password: '1234',
role: 'ADMIN'
},
{
email: 'user1@idcjp.jp',
name: '사용자1',
password: '1234',
role: 'USER'
},
{
email: 'user2@idcjp.jp',
name: '사용자2',
password: '1234',
role: 'USER'
},
{
email: 'user3@idcjp.jp',
name: '사용자3',
password: '1234',
role: 'USER'
}
]
const transferUser = async () => {
const users = []
for (const userData of userDatas) {
const user = prisma.user.create({ data: userData })
users.push(user)
}
return await prisma.$transaction(users)
}
const todoDatas: Prisma.TodoCreateInput[] = [
{
title: '타이틀_1',
content: '내용_1'
},
{
title: '타이틀_2',
content: '내용_2'
},
{
title: '타이틀_3',
content: '내용_3'
},
{
title: '타이틀_4',
content: '내용_4'
},
{
title: '타이틀_5',
content: '내용_5'
},
{
title: '타이틀_6',
content: '내용_6'
},
{
title: '타이틀_7',
content: '내용_7'
},
{
title: '타이틀_8',
content: '내용_8'
},
{
title: '타이틀_9',
content: '내용_9'
},
{
title: '타이틀_10',
content: '내용_10'
},
{
title: '타이틀_11',
content: '내용_11'
},
{
title: '타이틀_12',
content: '내용_12'
},
{
title: '타이틀_13',
content: '내용_13'
},
{
title: '타이틀_14',
content: '내용_14'
},
{
title: '타이틀_15',
content: '내용_15'
}
]
const transferTodo = async () => {
const todos = []
for (const todoData of todoDatas) {
const todo = prisma.todo.create({ data: todoData })
todos.push(todo)
}
return await prisma.$transaction(todos)
}
const main = async () => {
console.log(`Start User seeding ...`)
await transferUser()
console.log(`Seeding User finished.`)
console.log(`Start Todo seeding ...`)
await transferTodo()
console.log(`Seeding Todo finished.`)
}
main()
.catch((e) => {
console.error(e)
process.exit(1)
})
.finally(async () => {
await prisma.$disconnect()
})