본문 바로가기
Backend/TypeORM

다양한 Column 들 (Column Annotation)

by 찬찬2 2024. 6. 7.
import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, VersionColumn, Generated } from 'typeorm';


export enum Role {
    USER = 'user',
    ADMIN = 'admin'
}

@Entity()
export class UserModel {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({
    type: 'varchar',
    name: 'title',
    length: 300,
    nullable: true,
    update: true, // true 면 처음 저장할떄만 값 지정 가능. 이후에는 값 변경 안됨.
    select: false, // find()를 실행할때 기본으로 값을 불러올지, 기본값은 true
    default: 'default title', // 아무것도 입력 안했을때 기본적으로 입력되게 할 값
    unique: false, // 기본값은 false. 중복값을 허용하지 않는다. 즉 row 에 값이 1일 경우 다른 row 에서 같은 값을 가질 수 없다. (사용자의 이메일)
  })
  title: string;

  @Column({
    type: 'enum', // 값을 강제로 넣고자할때 enum을 사용한다.
    enum: Role,
    default: Role.USER // 저장할때, 해당 값은 필수로 들어가야한다. 여기서 default를 지정하지 않을 경우 insert 또는 save 할때 해당 값이 없으면 에러가 발생한다.
  })
  role: Role;

  @CreateDateColumn()
  createdAt: Date;

  @UpdateDateColumn()
  updatedAt: Date;

  // 데이터가 업데이트 될때마다 1씩 올라간다.
  // 정확히 말하자면, save() 함수를 호출할 때마다 1씩 올라간다.
  @VersionColumn()
  version: number;

  @Column()
  @Generated('uuid')
  additionalId: number;
}

댓글