From 419fa2785b65d2621735cb4e760a7cabb753b872 Mon Sep 17 00:00:00 2001 From: GeunH Date: Thu, 23 Nov 2023 11:50:36 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor=20:=20entity=20=ED=85=8C=EC=9D=B4?= =?UTF-8?q?=EB=B8=94=20=EA=B5=AC=EC=A1=B0=20=EC=88=98=EC=A0=95.=20#35?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TypeORM의 @ManyToOne 데코레이터와 @PrimaryColumn 데코레이터를 같이 사용했을 때 발생하는 네이밍 관련 이슈 해결 --- be/src/user/entities/user.followList.entity.ts | 6 ++++++ be/src/user/entities/user.restaurantlist.entity.ts | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/be/src/user/entities/user.followList.entity.ts b/be/src/user/entities/user.followList.entity.ts index b45e5c5c..06bd1f95 100644 --- a/be/src/user/entities/user.followList.entity.ts +++ b/be/src/user/entities/user.followList.entity.ts @@ -11,10 +11,16 @@ import { User } from "./user.entity"; @Entity("follow") export class FollowEntity { @ManyToOne(() => User) + @JoinColumn({ name: "following_user_id" }) + followingUser: User; + @PrimaryColumn({ name: "following_user_id" }) followingUserId: number; @ManyToOne(() => User) + @JoinColumn({ name: "followed_user_id" }) + followedUser: User; + @PrimaryColumn({ name: "followed_user_id" }) followedUserId: number; diff --git a/be/src/user/entities/user.restaurantlist.entity.ts b/be/src/user/entities/user.restaurantlist.entity.ts index e3c7cbec..292bcea4 100644 --- a/be/src/user/entities/user.restaurantlist.entity.ts +++ b/be/src/user/entities/user.restaurantlist.entity.ts @@ -13,10 +13,16 @@ import { ReviewInfoEntity } from "src/review/entities/review.entity"; @Entity("user_restaurant_lists") export class UserRestaurantListEntity { @ManyToOne(() => User) + @JoinColumn({ name: "user_id" }) + user: User; + @PrimaryColumn({ name: "user_id" }) userId: number; @ManyToOne(() => RestaurantInfoEntity) + @JoinColumn({ name: "restaurant_id" }) + restaurant: RestaurantInfoEntity; + @PrimaryColumn({ name: "restaurant_id" }) restaurantId: number; From 3858b16a976c3365c014ef1f570321b346e5b8d0 Mon Sep 17 00:00:00 2001 From: GeunH Date: Thu, 23 Nov 2023 15:41:19 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor=20:=20entity=20=EC=B0=B8=EC=A1=B0?= =?UTF-8?q?=EA=B4=80=EA=B3=84=20=EC=88=98=EC=A0=95=20#33?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: LeeTH916 --- .../restaurant/entities/restaurant.entity.ts | 10 +++++++ be/src/review/entities/review.entity.ts | 21 +++++++++------ be/src/user/entities/user.entity.ts | 18 ++++++++++++- .../user/entities/user.followList.entity.ts | 16 ++++++------ .../entities/user.restaurantlist.entity.ts | 26 ++++++++++--------- 5 files changed, 62 insertions(+), 29 deletions(-) diff --git a/be/src/restaurant/entities/restaurant.entity.ts b/be/src/restaurant/entities/restaurant.entity.ts index 914a9cca..52013b25 100644 --- a/be/src/restaurant/entities/restaurant.entity.ts +++ b/be/src/restaurant/entities/restaurant.entity.ts @@ -5,8 +5,12 @@ import { CreateDateColumn, UpdateDateColumn, Unique, + OneToMany, } from "typeorm"; import { Point } from "geojson"; +import { ReviewInfoEntity } from "src/review/entities/review.entity"; +import { User } from "src/user/entities/user.entity"; +import { UserRestaurantListEntity } from "src/user/entities/user.restaurantlist.entity"; @Unique("unique_name_location", ["name", "location"]) @Entity("restaurant") @@ -45,4 +49,10 @@ export class RestaurantInfoEntity { @UpdateDateColumn({ name: "updated_at" }) updatedAt: Date; + + @OneToMany(() => UserRestaurantListEntity, userRestaurant => userRestaurant.restaurant) + userRestaurant: UserRestaurantListEntity + + @OneToMany(() => ReviewInfoEntity, review => review.restaurant) + review: ReviewInfoEntity } diff --git a/be/src/review/entities/review.entity.ts b/be/src/review/entities/review.entity.ts index f298d531..e87dede0 100644 --- a/be/src/review/entities/review.entity.ts +++ b/be/src/review/entities/review.entity.ts @@ -5,23 +5,17 @@ import { CreateDateColumn, ManyToOne, JoinColumn, + OneToOne, } from "typeorm"; import { User } from "src/user/entities/user.entity"; import { RestaurantInfoEntity } from "src/restaurant/entities/restaurant.entity"; +import { UserRestaurantListEntity } from "src/user/entities/user.restaurantlist.entity"; @Entity("review") export class ReviewInfoEntity { @PrimaryGeneratedColumn("increment") id: number; - @ManyToOne(() => User) - @JoinColumn({ name: "user_id" }) - user: User; - - @ManyToOne(() => RestaurantInfoEntity) - @JoinColumn({ name: "restaurant_id" }) - restaurant: RestaurantInfoEntity; - @Column({ type: "boolean" }) visitMethod: boolean; @@ -45,4 +39,15 @@ export class ReviewInfoEntity { @CreateDateColumn({ name: "created_at" }) createdAt: Date; + + @ManyToOne(() => User) + @JoinColumn({ name: "user_id" }) + user: User; + + @ManyToOne(() => RestaurantInfoEntity) + @JoinColumn({ name: "restaurant_id" }) + restaurant: RestaurantInfoEntity; + + @OneToOne(() => UserRestaurantListEntity) + userRestaurant: UserRestaurantListEntity } diff --git a/be/src/user/entities/user.entity.ts b/be/src/user/entities/user.entity.ts index 02e7a19d..b9d15f77 100644 --- a/be/src/user/entities/user.entity.ts +++ b/be/src/user/entities/user.entity.ts @@ -5,7 +5,11 @@ import { CreateDateColumn, UpdateDateColumn, DeleteDateColumn, + OneToMany, } from "typeorm"; +import { FollowEntity } from "./user.followList.entity"; +import { UserRestaurantListEntity } from "./user.restaurantlist.entity"; +import { ReviewInfoEntity } from "src/review/entities/review.entity"; @Entity() export class User { @@ -41,4 +45,16 @@ export class User { @UpdateDateColumn({ type: "timestamp" }) updated_at: Date; -} + + @OneToMany(() => FollowEntity, follow => follow.followingUserId) + following: FollowEntity[] + + @OneToMany(() => FollowEntity, follow => follow.followedUserId) + follower: FollowEntity[] + + @OneToMany(() => UserRestaurantListEntity, list => list.userId) + restaurant: UserRestaurantListEntity[] + + @OneToMany(() => ReviewInfoEntity, review => review.user) + review: UserRestaurantListEntity[] +} \ No newline at end of file diff --git a/be/src/user/entities/user.followList.entity.ts b/be/src/user/entities/user.followList.entity.ts index 06bd1f95..cd6a5420 100644 --- a/be/src/user/entities/user.followList.entity.ts +++ b/be/src/user/entities/user.followList.entity.ts @@ -10,17 +10,9 @@ import { User } from "./user.entity"; @Entity("follow") export class FollowEntity { - @ManyToOne(() => User) - @JoinColumn({ name: "following_user_id" }) - followingUser: User; - @PrimaryColumn({ name: "following_user_id" }) followingUserId: number; - @ManyToOne(() => User) - @JoinColumn({ name: "followed_user_id" }) - followedUser: User; - @PrimaryColumn({ name: "followed_user_id" }) followedUserId: number; @@ -29,4 +21,12 @@ export class FollowEntity { @DeleteDateColumn({ name: "deleted_at", nullable: true, type: "timestamp" }) deletedAt: Date | null; + + @ManyToOne(() => User) + @JoinColumn({ name: "following_user_id" }) + followingUser: User; + + @ManyToOne(() => User) + @JoinColumn({ name: "followed_user_id" }) + followedUser: User; } diff --git a/be/src/user/entities/user.restaurantlist.entity.ts b/be/src/user/entities/user.restaurantlist.entity.ts index 292bcea4..59949a6a 100644 --- a/be/src/user/entities/user.restaurantlist.entity.ts +++ b/be/src/user/entities/user.restaurantlist.entity.ts @@ -12,27 +12,29 @@ import { ReviewInfoEntity } from "src/review/entities/review.entity"; @Entity("user_restaurant_lists") export class UserRestaurantListEntity { - @ManyToOne(() => User) - @JoinColumn({ name: "user_id" }) - user: User; - @PrimaryColumn({ name: "user_id" }) userId: number; - @ManyToOne(() => RestaurantInfoEntity) - @JoinColumn({ name: "restaurant_id" }) - restaurant: RestaurantInfoEntity; - @PrimaryColumn({ name: "restaurant_id" }) restaurantId: number; - @ManyToOne(() => ReviewInfoEntity) - @JoinColumn({ name: "review_id" }) - reviewId: ReviewInfoEntity; - @CreateDateColumn({ name: "created_at", type: "timestamp" }) createdAt: Date; @Column({ name: "deleted_at", type: "timestamp", nullable: true }) deletedAt: Date | null; + + @ManyToOne(() => User) + @JoinColumn({ name: "user_id" }) + user: User; + + @ManyToOne(() => RestaurantInfoEntity) + @JoinColumn({ name: "restaurant_id" }) + restaurant: RestaurantInfoEntity; + + @ManyToOne(() => ReviewInfoEntity) + @JoinColumn({ name: "review_id" }) + review: ReviewInfoEntity; } + +