[내일배움캠프 - Nest.js 개인과제] Nest.js + TypeORM | 공연 예매 사이트 만들기 - ERD, Entity 수정

sooyoung choi·2023년 12월 30일
0

내일배움캠프

목록 보기
9/19
post-thumbnail

ERD..

만들어 놓고 하다보면 다시 수정하고 수정하는 것이 반복되었다.
며칠을 잡아먹은건지 🙄



테이블 추가 및 관계 수정

기존

user - payment < 1:N >
user - point < 1:N >
user - seat < 1:N >
payment - seat < 1:N >
point - seat < 1:1 >
performance - seat < 1:N >

추가

performance - schedule < 1:N >
schedule - seat < 1:N >



Entity 수정

  • 공연 테이블에 공연 기본가 컬럼 추가
  • 좌석 테이블에 좌석 가격 삭제

스케줄 엔티티

import { Performance } from 'src/performance/entities/performance.entity';
import { Seat } from 'src/seat/entities/seat.entity';
import {
  Column,
  Entity,
  ManyToOne,
  OneToMany,
  PrimaryGeneratedColumn,
} from 'typeorm';

@Entity({
  name: 'schedule',
})
export class Schedule {
  @PrimaryGeneratedColumn({ name: 'schedule_id' })
  id: number;

  @Column({ type: 'varchar', nullable: false })
  date: string;

  @Column({ type: 'varchar', nullable: false })
  start_at: string;

  @Column({ type: 'varchar', nullable: false })
  end_at: string;

  @OneToMany(() => Seat, (seat) => seat.schedule)
  seats: Seat[];

  @ManyToOne(() => Performance, (performance) => performance.schedule, {
    onDelete: 'CASCADE',
  })
  performance: Performance;
}

공연 엔티티

 ...

  @OneToMany(() => Schedule, (schedule) => schedule.performance)
  schedule: Schedule[]; // 추가
}

좌석 엔티티

...
  @ManyToOne(() => Schedule, (schedule) => schedule.seats)
  schedule: Schedule; // 추가
}

0개의 댓글