[nestjs] 표준 단어 관리 API 만들기 02

in #krlast year

이전 글

모델 분석

image.png

위와 같은 형태의 관계를 가질 수 있도록 구성 해보도록 하겠습니다.

모델 구성

아래와 같은 틀을 가지고 작성

model 모델명 {
 // KEY

  // FIELDS

  // SHARES

  // RELATIONS - ONE

  // RELATIONS - MANY
}

모델 생성


// 단어 검색
model word_srch {
  // KEY
  id          Int      @id @default(autoincrement()) // 아이디

  // FIELDS
  krn_name    String   @db.VarChar(256) // 한글명
  ngls_name   String   @db.VarChar(256) // 영문명

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS
}

// 표준 단어 사전
model stnd_word_dctn {
  // KEY
  id          Int      @id @default(autoincrement()) // 아이디

  // FIELDS
  ngls_name   String   @db.VarChar(256) // 영문명
  ngls_bbrv_name   String   @db.VarChar(32) // 영문약어명
  krn_name    String   @db.VarChar(256) // 한글명

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE
  term_id     Int      // 표준 용어 사전 아이디
  term_item   stnd_term_dctn @relation(fields: [term_id], references: [id]) // 표준 용어 사전

  // RELATIONS - MANY
}

// 표준 용어 사전
model stnd_term_dctn{
  // KEY
  id          Int      @id @default(autoincrement()) // 아이디

  // FIELDS
  term   String   @db.VarChar(256)// 용어
  term_ngls   String  @unique @db.VarChar(256) // 용어영문

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE
  dmn String @db.VarChar(32) // 도메인
  dmn_item stnd_dmn_dctn @relation(fields: [dmn], references: [dmn]) // 표준 도메인 사전 목록

  // RELATIONS - MANY
  word_list stnd_word_dctn[] // 표준 단어 사전 목록
  code_list stnd_code[] // 표준 코드 목록, 배열은 optional 처리가 되지 않음에 유의 => empty list
}

// 표준 코드
model stnd_code {
  // KEY
  term_ngls   String @db.VarChar(256)// 용어영문
  code     String @db.VarChar(32) // 코드
  @@id([term_ngls, code])

  // FIELDS
  code_vl    String @db.VarChar(256)// 코드값
  sort_rdr   Int @db.SmallInt // 정렬순서
  use_yn   String @db.Char(1)  @default("Y")// 사용여부

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE
  term_item stnd_term_dctn @relation(fields: [term_ngls], references: [term_ngls]) // 표준 도메인 사전 목록

  // RELATIONS - MANY
}

// 표준 도메인 사전
model stnd_dmn_dctn{
  // KEY
  dmn    String    @id @db.VarChar(32) // 도메인

  // FIELDS
  data_type   String @db.VarChar(32)// 데이터 타입

  // SHARES
  created_at  DateTime @default(now()) // 생성일
  updated_at  DateTime @updatedAt // 수정일

  // RELATIONS - ONE

  // RELATIONS - MANY
  term_list stnd_term_dctn[] // 표준 용어 사전 목록
}

테이블 생성

npx prisma migrate dev --name "metadata"

위 커맨드를 실행하여 DB 마이그레이션(생성)을 진행한다

image.png

참조

모델 생성 시 @db.VarChar(32) 등과 같이 명시적으로 테이블의 타입을 지정하지 않으면 postresql 의 경우 아래와 같이 DB의 값이 지정됨에 유의한다.

String => text
Int => int4
autoincrement => serial4
DateTime => timestamp(3)

맺음말

이로써 Table 설계 까지 완료 하였고, 다음 시간에는 nestjs 에서 rest-api setup을 진행 해보도록 하겠습니다.

참조링크

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.20
TRX 0.20
JST 0.034
BTC 90227.69
ETH 3079.14
USDT 1.00
SBD 2.93