728x90
nest g mo users

로 모듈을 생성합니다.

이전에 연습삼아 만들고 있었던 레스토랑 모듈은 빼주도록 하겠습니다.
entities 에서도 빼줄게요

imports 에 UsersModule 이 잘 추가되었습니다.

users 폴더 안에 entities 폴더를 만들고 user.entity.ts 파일을 만들게요

user.entity.ts 는 database 모델을 정의하기 위한 ts 파일입니다. TypeOrmModule 의 syncronize 값을 True 로 바꿔주면 user.entity.ts 에서 정의한 Column 들을 그대로 데이터베이스에 반영합니다.

user.entity.ts

import { Column, Entity } from 'typeorm';

type UserRole = 'client' | 'owner' | 'deliver';

@Entity()
export class User {
  @Column()
  email: string;

  @Column()
  password: string;

  @Column()
  role: UserRole;
}

role 에서 유저는 client 또는 owner 또는 deliver 가 될수 있어서 type 을 UserRole 이라는 타입을 새롭게 만들었습니다.

User Model:

  • id

  • createdAt

  • updatedAt

  • email

  • password

  • role(cliend | owner | delivery)

user model 에서는 다음과 같이 정의할 것인데 id 부터 updatedAt 까지는 다른 table에서도 동일하게 적용될 column 이라서 user class 에서 정의하지 않겠습니다.

이걸 위해서 common 이라는 모듈을 만들게요

nest g mo common

common 모듈은 기본적으로 공유되는 모든것을 적용할 예정입니다.

즉 App 에서 공유되는 모든 것들은 commonModule로 갈거에요

common 폴더 안에 entities 폴더를 만들고 core.entity.ts 파일을 만듭니다.

core.entity.ts

import { PrimaryGeneratedColumn } from 'typeorm';

export class CoreEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @CreateDateColumn()
  createdAt: Date;

  @UpdateDateColumn()
  updatedAt: Date;
}

user.entity.ts

import { CoreEntity } from 'src/common/entities/core.entity';
import { Column, Entity } from 'typeorm';

type UserRole = 'client' | 'owner' | 'deliver';

@Entity()
export class User extends CoreEntity {
  @Column()
  email: string;

  @Column()
  password: string;

  @Column()
  role: UserRole;
}

CoreEntity 라는 클래스로 기본 뼈대를 잡고 User class 에서 상속 받습니다.

entities 에 User를 추가한뒤 서버를 실행 시킵니다.

User table 이 잘 생성되었네요 ㅎ

github 참고

728x90

'Side > uber-eats' 카테고리의 다른 글

라이브러리 없이 만드는 JWT - 1  (0) 2021.06.06
Nestjs , Typeorm 에서 Hasing passwords  (0) 2021.06.05
Nestjs - Typeorm Repository 사용하기  (0) 2021.05.31
TypeORM setup 과 Nestjs Config  (0) 2021.05.23
NestJs Validating ArgsTypes  (0) 2021.05.23