Skip to content

Commit

Permalink
Merge:(minho/board):GlobalPipes추가, entity FK설정
Browse files Browse the repository at this point in the history
  • Loading branch information
klaus9267 committed Sep 8, 2022
2 parents 8a9ba99 + b85940d commit 01e9b14
Show file tree
Hide file tree
Showing 43 changed files with 1,159 additions and 197 deletions.
514 changes: 381 additions & 133 deletions main-project/package-lock.json

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions main-project/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,16 @@
"@nestjs/config": "^2.2.0",
"@nestjs/core": "^8.0.0",
"@nestjs/platform-express": "^8.0.0",
"@nestjs/schematics": "^9.0.1",
"@nestjs/swagger": "^5.2.0",
"@nestjs/typeorm": "^8.0.3",
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
"mysql2": "^2.3.3",
"npm": "^8.18.0",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^7.2.0",
"swagger-ui-express": "^4.3.0",
"typeorm": "^0.2.45"
},
"devDependencies": {
Expand All @@ -55,7 +58,7 @@
"ts-loader": "^9.2.3",
"ts-node": "^10.0.0",
"tsconfig-paths": "4.0.0",
"typescript": "^4.3.5"
"typescript": "<4.8"
},
"jest": {
"moduleFileExtensions": [
Expand Down
6 changes: 6 additions & 0 deletions main-project/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,19 @@ import { AppService } from './app.service';
import { typeOrmConfig } from './common/configs/typeorm.config';
import { MeetingsModule } from './meetings/meetings.module';
import { BoardsModule } from './boards/boards.module';
import { MembersModule } from './members/members.module';
import { NoticesModule } from './notices/notices.module';
import { UsersModule } from './users/users.module';

@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
TypeOrmModule.forRootAsync(typeOrmConfig),
MeetingsModule,
BoardsModule,
MembersModule,
NoticesModule,
UsersModule,
],
controllers: [AppController],
providers: [AppService],
Expand Down
24 changes: 24 additions & 0 deletions main-project/src/boards/entity/board-bookmark.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { Users } from 'src/users/entity/user.entity';
import { Boards } from './board.entity';
import {
BaseEntity,
Entity,
JoinColumn,
ManyToOne,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';

@Entity('board_bookmarks')
export class BoardBookmarks extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;

@OneToOne((type) => Boards, (board) => board.boardBookmark)
@JoinColumn({ name: 'board_no' })
boardNo: Boards;

@ManyToOne((type) => Users, (user) => user.boardBookmark)
@JoinColumn({ name: 'user_no' })
userNo: Users;
}
25 changes: 25 additions & 0 deletions main-project/src/boards/entity/board-member-info.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import {
BaseEntity,
Column,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Boards } from './board.entity';

@Entity('board_member_infos')
export class BoardMemberInfos extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;

@Column({ type: 'int' })
male: number;

@Column({ type: 'int' })
female: number;

@OneToOne((type) => Boards, (board) => board.boardMemberInfo)
@JoinColumn({ name: 'board_no' })
boardNo: Boards;
}
8 changes: 0 additions & 8 deletions main-project/src/boards/entity/board.bookmark.entity.ts

This file was deleted.

48 changes: 33 additions & 15 deletions main-project/src/boards/entity/board.entity.ts
Original file line number Diff line number Diff line change
@@ -1,45 +1,63 @@
import { Meetings } from 'src/meetings/entity/meeting.entity';
import { BoardBookmarks } from './board-bookmark.entity';
import { BoardMemberInfos } from './board-member-info.entity';
import {
BaseEntity,
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';

// fk없음, entity취합 후 생성예정
@Entity()
export class Board extends BaseEntity {
@Entity('boards')
export class Boards extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;

@Column({ type: 'varchar', length: 255 })
@Column({ type: 'varchar', length: 255, nullable: false })
title: string;

@Column({
type: 'tinyint',
width: 1,
default: false,
comment: '인원 모집 여부',
nullable: false,
})
done: boolean;
isDone: boolean;

@Column({ type: 'varchar', length: 255 })
@Column({ type: 'varchar', length: 255, nullable: true })
description: string;

@Column({ type: 'varchar', length: 255 })
@Column({ type: 'varchar', length: 255, nullable: true })
location: string;

@Column({ type: 'date' })
time: Date;
@Column({ type: 'date', nullable: true })
meetingTime: Date;

@CreateDateColumn()
created_date: Date;
@CreateDateColumn({ name: 'created_date' })
createdDate: Date;

@UpdateDateColumn({ nullable: true })
updated_date: Date;
@UpdateDateColumn({ default: null, nullable: false, name: 'updated_date' })
updatedDate: Date;

@DeleteDateColumn({ nullable: true })
deleted_date: Date;
@DeleteDateColumn({ nullable: true, name: 'deleted_date' })
deletedDate: Date;

@OneToOne(
(type) => BoardMemberInfos,
(boardMemberInfo) => boardMemberInfo.boardNo,
)
boardMemberInfo: BoardMemberInfos;

@OneToOne((type) => BoardBookmarks, (boardBookmark) => boardBookmark.boardNo)
boardBookmark: BoardBookmarks;

@OneToOne((type) => Meetings, (meeting) => meeting.board)
@JoinColumn({ name: 'board_no' })
meetingNo: Meetings;
}
14 changes: 0 additions & 14 deletions main-project/src/boards/entity/board.member.info.entity.ts

This file was deleted.

18 changes: 17 additions & 1 deletion main-project/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,28 @@
import { ValidationPipe } from '@nestjs/common';
import { Logger } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { AppModule } from './app.module';

async function bootstrap() {
const app = await NestFactory.create(AppModule);
const port = process.env.PORT;
const config = new DocumentBuilder()
.setTitle('4term project API')
.setVersion('0.0.1')
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);

await app.listen(3000);
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
forbidNonWhitelisted: true,
transform: true,
}),
);

await app.listen(port);
Logger.debug(`서버 가동 port : ${port}`);
}
bootstrap();
31 changes: 31 additions & 0 deletions main-project/src/meetings/dto/createMeeting.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { IsDate, IsNotEmpty, IsString, IsObject } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';

export class CreateMeetingDto {
@IsNotEmpty()
@IsObject()
@ApiProperty({
example: [1, 2, 3],
description: '약속 주최자 측 정보, 배열 0번지가 게시물 작성자',
required: true,
})
host: object;

@IsNotEmpty()
@IsString()
@ApiProperty({
example: '경기도',
description: '약속 장소',
required: true,
})
location: string;

@IsNotEmpty()
@IsDate()
@ApiProperty({
example: '2022-06-27 15:22:31',
description: '약속 시간',
required: true,
})
time: Date;
}
20 changes: 20 additions & 0 deletions main-project/src/meetings/dto/updateMeeting.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { IsOptional, IsString, IsDate } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';

export class UpdateMeetingDto {
@IsOptional()
@IsString()
@ApiProperty({
example: '경기도',
description: '약속 장소',
})
location: string;

@IsOptional()
@IsDate()
@ApiProperty({
example: '2022-06-27 15:22:31',
description: '약속 시간',
})
time: Date;
}
28 changes: 28 additions & 0 deletions main-project/src/meetings/entity/meeting-info.entity.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { Users } from 'src/users/entity/user.entity';
import {
BaseEntity,
Entity,
JoinColumn,
ManyToOne,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Meetings } from './meeting.entity';

@Entity('meeting_info')
export class MeetingInfo extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;

@ManyToOne((type) => Users, (user) => user.meetingGuest)
guest: Users;

@ManyToOne((type) => Users, (user) => user.meetingHost)
host: Users;

@OneToOne((type) => Meetings, (meeting) => meeting.meetingInfo, {
nullable: false,
})
@JoinColumn({ name: 'meeting_no' })
meetingNo: Meetings;
}
41 changes: 25 additions & 16 deletions main-project/src/meetings/entity/meeting.entity.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
import { Boards } from 'src/boards/entity/board.entity';
import { GuestMembers } from 'src/members/entity/guest-members.entity';
import { HostMembers } from 'src/members/entity/host-members.entity';
import {
BaseEntity,
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
OneToMany,
OneToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { MeetingInfo } from './meeting-info.entity';

@Entity()
export class Meeting extends BaseEntity {
@Entity('meetings')
export class Meetings extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;

Expand All @@ -19,24 +25,27 @@ export class Meeting extends BaseEntity {
@Column({ type: 'datetime' })
time: Date;

@Column({ type: 'tinyint', width: 1, default: false })
is_accepted: boolean;

// @Column({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
// created_date: string;
@Column({ type: 'tinyint', width: 1, default: false, name: 'is_accepted' })
isAccepted: boolean;

@CreateDateColumn()
created_date: Date;

// @Column({
// type: 'datetime',
// onUpdate: 'CURRENT_TIMESTAMP',
// })
// updated_date: string;
@UpdateDateColumn({ default: null, nullable: true, name: 'updated_date' })
updatedDate: Date;

@DeleteDateColumn({ nullable: true, name: 'deleted_date' })
deletedDate: Date;

@OneToOne((type) => MeetingInfo, (meetingInfo) => meetingInfo.meetingNo)
meetingInfo: MeetingInfo;

@OneToMany((type) => HostMembers, (hostMembers) => hostMembers.meetingNo)
hostMembers: HostMembers[];

@UpdateDateColumn({ nullable: true })
updated_date: Date;
@OneToMany((type) => GuestMembers, (guestMembers) => guestMembers.meetingNo)
guestMembers: GuestMembers[];

@DeleteDateColumn({ nullable: true })
deleted_date: Date;
@OneToOne((type) => Boards, (board) => board.meetingNo)
board: Boards;
}
Loading

0 comments on commit 01e9b14

Please sign in to comment.