From cb7000b386b1bc4a57c796c89640296355193b7c Mon Sep 17 00:00:00 2001 From: kimyu0218 Date: Tue, 14 Nov 2023 17:30:42 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20entity=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit typeorm을 활용하여 프로젝트에 필요한 entity 정의 --- .../chat/entities/chatting-message.entity.ts | 33 +++++++++++++++++ .../src/chat/entities/chatting-room.entity.ts | 35 ++++++++++++++++++ backend/src/members/entities/member.entity.ts | 37 +++++++++++++++++++ backend/src/taro/entities/taro-card.entity.ts | 36 ++++++++++++++++++ .../src/taro/entities/taro-result.entity.ts | 22 +++++++++++ 5 files changed, 163 insertions(+) create mode 100644 backend/src/chat/entities/chatting-message.entity.ts create mode 100644 backend/src/chat/entities/chatting-room.entity.ts create mode 100644 backend/src/members/entities/member.entity.ts create mode 100644 backend/src/taro/entities/taro-card.entity.ts create mode 100644 backend/src/taro/entities/taro-result.entity.ts diff --git a/backend/src/chat/entities/chatting-message.entity.ts b/backend/src/chat/entities/chatting-message.entity.ts new file mode 100644 index 00000000..2e11aa49 --- /dev/null +++ b/backend/src/chat/entities/chatting-message.entity.ts @@ -0,0 +1,33 @@ +import { + Column, + CreateDateColumn, + Entity, + ManyToOne, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { ChattingRoom } from './chatting-room.entity'; + +@Entity() +export class ChattingMessage { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column('boolean') + isHost: boolean; + + @Column({ length: 1000 }) + message: string; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; + + @ManyToOne( + () => ChattingRoom, + (chattingRoom) => chattingRoom.chattingMessages, + ) + roomId: ChattingRoom; +} diff --git a/backend/src/chat/entities/chatting-room.entity.ts b/backend/src/chat/entities/chatting-room.entity.ts new file mode 100644 index 00000000..c942a650 --- /dev/null +++ b/backend/src/chat/entities/chatting-room.entity.ts @@ -0,0 +1,35 @@ +import { Member } from 'src/members/entities/member.entity'; +import { + Column, + CreateDateColumn, + Entity, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; +import { ChattingMessage } from './chatting-message.entity'; + +@Entity() +export class ChattingRoom { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ nullable: true }) + title: string; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; + + @Column({ nullable: true }) + deletedAt: Date; + + @OneToMany(() => ChattingMessage, (chattingMessage) => chattingMessage.id) + chattingMessages: ChattingMessage[]; + + @ManyToOne(() => Member, (member) => member.chattingRooms) + participant: Member; +} diff --git a/backend/src/members/entities/member.entity.ts b/backend/src/members/entities/member.entity.ts new file mode 100644 index 00000000..4250b13f --- /dev/null +++ b/backend/src/members/entities/member.entity.ts @@ -0,0 +1,37 @@ +import { ChattingRoom } from 'src/chat/entities/chatting-room.entity'; +import { TaroCard } from 'src/taro/entities/taro-card.entity'; +import { + Column, + CreateDateColumn, + Entity, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; + +@Entity() +export class Member { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ length: 20, nullable: true }) + nickname: string; + + @Column({ length: 255, nullable: true }) + profileUrl: string; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; + + @Column({ nullable: true }) + deletedAt: Date; + + @OneToMany(() => ChattingRoom, (chattingRoom) => chattingRoom.participant) + chattingRooms: ChattingRoom[]; + + @OneToMany(() => TaroCard, (taroCard) => taroCard.owner) + taroCards: TaroCard[]; +} diff --git a/backend/src/taro/entities/taro-card.entity.ts b/backend/src/taro/entities/taro-card.entity.ts new file mode 100644 index 00000000..eb08a00e --- /dev/null +++ b/backend/src/taro/entities/taro-card.entity.ts @@ -0,0 +1,36 @@ +import { Member } from 'src/members/entities/member.entity'; +import { + Column, + CreateDateColumn, + Entity, + ManyToOne, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; + +@Entity() +export class TaroCard { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column('int') + cardNo: number; + + @Column({ length: 20 }) + cardPack: string; + + @Column({ length: 255 }) + cardUrl: string; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; + + @Column({ nullable: true }) + deletedAt: Date; + + @ManyToOne(() => Member, (member) => member.taroCards) + owner: Member; +} diff --git a/backend/src/taro/entities/taro-result.entity.ts b/backend/src/taro/entities/taro-result.entity.ts new file mode 100644 index 00000000..5f73def7 --- /dev/null +++ b/backend/src/taro/entities/taro-result.entity.ts @@ -0,0 +1,22 @@ +import { + Column, + CreateDateColumn, + Entity, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; + +@Entity() +export class TaroResult { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ type: 'binary', length: 32 }) + taroResult: string; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; +}