Skip to content

Commit

Permalink
[GWL-50] typeORM entity 세팅 및 테스트 (#56)
Browse files Browse the repository at this point in the history
* chore: typeORM entity 세팅
  • Loading branch information
sjy982 authored Nov 16, 2023
1 parent 16f6422 commit 142e48b
Show file tree
Hide file tree
Showing 4 changed files with 163 additions and 0 deletions.
43 changes: 43 additions & 0 deletions BackEnd/src/posts/entities/posts.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
OneToOne,
JoinColumn,
} from 'typeorm';
import { RecordModel } from 'src/records/entities/records.entity';
import { ProfileModel } from 'src/profiles/entities/profiles.entity';

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

@Column()
publicId: string;

@Column()
content: string;

@Column({ nullable: true })
like: number;

@CreateDateColumn()
createdAt: Date;

@UpdateDateColumn()
updatedAt: Date;

@Column()
deletedAt: Date;

@OneToOne(() => RecordModel)
@JoinColumn()
record: RecordModel;

@ManyToOne(() => ProfileModel, (profile) => profile.posts)
profile: ProfileModel;
}
47 changes: 47 additions & 0 deletions BackEnd/src/profiles/entities/profiles.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { PostModel } from 'src/posts/entities/posts.entity';
import { RecordModel } from 'src/records/entities/records.entity';
import { UserModel } from 'src/users/entities/users.entity';
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
Generated,
OneToOne,
OneToMany,
} from 'typeorm';

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

@Column({ unique: true })
nickname: string;

@Column({ nullable: false })
gender: string;

@Column({ nullable: false })
birthdate: Date;

@CreateDateColumn()
createdAt: Date;

@UpdateDateColumn()
updatedAt: Date;

@Column({ unique: true })
@Generated('uuid')
publicId: string;

@OneToOne(() => UserModel, (user) => user.profile)
user: UserModel;

@OneToMany(() => RecordModel, (record) => record.profile)
records: RecordModel[];

@OneToMany(() => PostModel, (post) => post.profile)
posts: PostModel[];
}
47 changes: 47 additions & 0 deletions BackEnd/src/records/entities/records.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
ManyToOne,
OneToOne,
} from 'typeorm';

import { UserModel } from 'src/users/entities/users.entity';
import { PostModel } from 'src/posts/entities/posts.entity';
import { ProfileModel } from 'src/profiles/entities/profiles.entity';
@Entity()
export class RecordModel {
@PrimaryGeneratedColumn()
id: number;

@Column()
exercise: string;

@Column()
runningTime: number;

@Column()
distance: number;

@Column({ nullable: true })
avgBpm: number;

@Column({ nullable: true })
minBpm: number;

@Column({ nullable: true })
maxBpm: number;

@CreateDateColumn()
createdAt: Date;

@Column()
checker: boolean;

@ManyToOne(() => ProfileModel, (profile) => profile.records) //manyToOne이 항상 외래키를 갖고 있음
profile: ProfileModel;

@OneToOne(() => PostModel, (post) => post.record)
post: PostModel;
}
26 changes: 26 additions & 0 deletions BackEnd/src/users/entities/users.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToOne,
JoinColumn,
} from 'typeorm';
import { ProfileModel } from 'src/profiles/entities/profiles.entity';
@Entity()
export class UserModel {
@PrimaryGeneratedColumn()
id: number;

@Column()
userId: string;

@Column()
provider: string;

@OneToOne(() => ProfileModel, (profile) => profile.user, {
eager: true,
cascade: true,
})
@JoinColumn()
profile: ProfileModel;
}

0 comments on commit 142e48b

Please sign in to comment.