supabase랑 prisma 연결하고 마이그레이션 후에 데이터 시드 만들기까지
새로운 프로젝트 생성 후에 데이터베이스 URL과 API를 따로 저장함
발급된 API KEY는 settings > API 에서,
URL은 setting > Database > Connection string > URI 에서 확인 가능함
yarn add --dev prisma : CLI 설치npx prisma init : 설정 파일 생성/* schema.prisma 파일 */
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
yarn add @prisma/client : 설치초기 데이터 or 테스트 데이터를 생성하는 과정
model User {
id Int @id @default(autoincrement())
email String @unique
name String
}
model Store {
id Int @id @default(autoincrement())
phone String? // tel_no
address String? // rdn_code_nm
lat String? // y_dnts
lng String? // x_cnts
name String? // upso_nm
category String? // bizcnd_code_nm
storeType String? // cob_code_nm
foodCertifyName String? // crtfc_gbn_nm
}
npx prisma migrate dev --name init
"prisma": {
"seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts"
}
/* prisma/seed.ts */
import { PrismaClient } from '@prisma/client'
import * as data from '../src/data/store_data.json'
const prisma = new PrismaClient()
async function seedData() {
data?.['DATA']?.map(async (store) => {
const storeData = {
phone: store?.tel_no,
address: store?.rdn_code_nm,
lat: store?.y_dnts,
lng: store?.x_cnts,
name: store?.upso_nm,
category: store?.bizcnd_code_nm,
storeType: store?.cob_code_nm,
foodCertifyName: store?.crtfc_gbn_nm,
}
const res = await prisma.store.create({
data: storeData,
})
console.log(res)
})
}
async function main() {
await seedData()
}
main()
.catch((e) => {
console.log(e)
process.exit(1)
})
.finally(() => {
prisma.$disconnect()
})
npx prisma db seed : 데이터 시드 실행