728x90
- entities 작성하기
각 api폴더에 entities 폴더 만들고 entities 작성 = 테이블 만든다고 보면됨
++ 가격 같은거에 제약사항(최소 0 이상) 걸어주려면 글로벌 파이프 설정 필요함
https://springdream0406.tistory.com/89
// 이것저것 짬뽕해서 예시로 넣음
@Entity()
export class Farm {
@PrimaryGeneratedColumn('increment')
farm_num: number;
@Column({ length: 50 })
farm_title: string;
@Column()
farm_address: string;
@Min(0) // 최소값 제약
@Column()
farm_price: number;
@Column({ type: 'decimal', precision: 9, scale: 6 })
lat: number;
@Column({ type: 'decimal', precision: 9, scale: 6 })
lng: number;
@Column({ nullable: false, type: 'date' })
startDate: Date;
@Column({ type: 'text' })
description: string;
@CreateDateColumn()
createdAt: Date;
@DeleteDateColumn()
deletedAt: Date;
@Column({ type: 'tinyint', default: 0 })
user_type: number;
@JoinColumn()
@OneToOne(() => User)
user: User;
@ManyToOne(() => User)
user: User;
}
boolean으로 타입 작성하면 tinyint로 들어감
oneToOne 의 경우 중심되는곳에 Join넣어줘야함
@CreateDateColumn() => 생성날짜
@UpdateDeteColumn() => 수정날짜
@DeleteDateColumn() => 삭제날짜
++
import {
Column,
CreateDateColumn,
Entity,
Generated,
PrimaryGeneratedColumn,
UpdateDateColumn,
VersionColumn,
} from 'typeorm';
export enum Role {
USER = 'user',
ADMIN = 'admin',
}
@Entity()
export class UserModel {
// ID
// 자동으로 ID를 생성한다.
// @PrimaryGeneratedColumn()
// PrimaryColumn은 모든 테이블에서 기본적으로 존재해야한다.
// 테이블 안에서 각각의 Row를 구분 할 수 있는 칼럼이다.
// @PrimaryColumn()
//
// @PrimaryGeneratedColumn('uuid')
// PrimaryGeneratedColumn -> 순서대로 위로 올라간다.
// 1, 2, 3, 4, 5 -> 999999
//
// UUID
// asdjdh123124-dfdasjdhfjahfkj1-asdfjashfjkashfk1-dfadfasfa
@PrimaryGeneratedColumn()
id: number;
// 제목
@Column({
// 데이터베이스에서 인지하는 칼럼 타입
// 자동으로 유추됨
type: 'varchar',
// 데이터베이스 칼럼 이름
// 프로퍼티 이름으로 자동 유추됨
name: 'title',
// 값의 길이
// 입력할 수 있는 글자의 길이가 300
length: 300,
// null이 가능한지
nullable: true,
// false면 처음 저장할때만 값 지정 가능
// 이후에는 값 변경 불가능,
update: true,
// find()를 실핼할 때 기본으로 값을 불러올지
// 기본값이 true, false면 find에서 안나옴.
select: true,
// 기본 값 true
// 아무것도 입력 안했을 때 기본으로 입력되게 되는 값
default: 'default value',
// 칼럼중에서 유일무이한 값이 돼야하는지
// 기본 값 false
unique: false,
})
title: string;
@Column({
type: 'enum',
enum: Role,
default: Role.USER,
})
role: Role;
// 데이터 생성 일자
// 데이터가 생성되는 날짜와 시간이 자동으로 찍힌다.
@CreateDateColumn()
createdAt: Date;
// 데이터 업데이트 일자
// 데이터가 업데이트되는 날짜와 시간이 자동으로 찍힌다.
@UpdateDateColumn()
updatedAt: Date;
// 데이터가 업데이트 될 때마다 1씩 올라간다.
// 처음 생성되면 값은 1이다.
// save() 함수가 몇번 불렸는지 기억한다.
@VersionColumn()
version: number;
// 추가적인 자동생성 컬럼을 만들 수 있다.
// ex) pk는 increment로 하고, uuid를 따로 생성가능
@Column()
@Generated('uuid')
additionalId: string;
}
728x90
'코딩 > TypeORM' 카테고리의 다른 글
Find Options (0) | 2024.10.15 |
---|---|
Relationship (0) | 2024.10.15 |
[Entity] Table Inheritance - 클래스 상속을 이용한 테이블 늘리기 (1) | 2024.10.11 |
사용 방법 예시들 (0) | 2024.04.22 |
초기 설정 + 공식문서 링크 (0) | 2024.04.17 |