Skip to content

Commit

Permalink
chore: typeORM entity 세팅
Browse files Browse the repository at this point in the history
  • Loading branch information
sjy982 committed Nov 16, 2023
1 parent 1dda640 commit e245c69
Show file tree
Hide file tree
Showing 6 changed files with 175 additions and 3 deletions.
11 changes: 9 additions & 2 deletions BackEnd/src/app.controller.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import { Controller, Get } from '@nestjs/common';
import { Controller, Get, Post } from '@nestjs/common';
import { AppService } from './app.service';
import { InjectRepository } from '@nestjs/typeorm';
import { UserModel } from './users/entities/users.entity';
import { Repository } from 'typeorm';

@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
constructor(
private readonly appService: AppService,
@InjectRepository(UserModel)
private readonly userRepository: Repository<UserModel>
) {}

@Get()
getHello(): string {
Expand Down
4 changes: 3 additions & 1 deletion BackEnd/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { LoggerMiddleware } from './middlewares/logger.middleware';

@Module({
imports: [TypeOrmModule.forRoot(typeOrmConfig)],
imports: [
TypeOrmModule.forRoot(typeOrmConfig),
],
controllers: [AppController],
providers: [AppService],
})
Expand Down
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 e245c69

Please sign in to comment.