Skip to content

Commit

Permalink
Fix(minho/board): branch 오류로 인한 데이터 백업modern-agile-team#4
Browse files Browse the repository at this point in the history
  • Loading branch information
klaus9267 committed Sep 3, 2022
1 parent 8a9ba99 commit 6ef5874
Show file tree
Hide file tree
Showing 10 changed files with 467 additions and 128 deletions.
419 changes: 308 additions & 111 deletions main-project/package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions main-project/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
"@nestjs/config": "^2.2.0",
"@nestjs/core": "^8.0.0",
"@nestjs/platform-express": "^8.0.0",
"@nestjs/schematics": "^9.0.1",
"@nestjs/typeorm": "^8.0.3",
"class-validator": "^0.13.2",
"mysql2": "^2.3.3",
"npm": "^8.18.0",
"reflect-metadata": "^0.1.13",
Expand Down Expand Up @@ -55,7 +55,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
52 changes: 50 additions & 2 deletions main-project/src/boards/boards.controller.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,52 @@
import { Controller } from '@nestjs/common';
import {
Body,
Controller,
Delete,
Get,
HttpCode,
HttpStatus,
Logger,
Param,
ParseIntPipe,
Post,
} from '@nestjs/common';
import { BoardsService } from './boards.service';
import { CreateBoardDto } from './dto/create-board.dto';
import { Board } from './entity/board.entity';

@Controller('boards')
export class BoardsController {}
export class BoardsController {
private logger = new Logger('BoardsController');
// logger는 middle ware로 분리 필요

constructor(private boardService: BoardsService) {}

@HttpCode(200)
@Get()
getAllBoards(): Promise<Board[]> {
this.logger.debug(`Get all boards.`);

return this.boardService.getAllBoards();
// 바로 return이 아닌 변수로 빼서 return 필요
}

@Get('/:boardNo')
getBoardByNo(@Param('boardNo') boardNo: number): Promise<Board> {
this.logger.debug(`Get board by boardNo.`);

return this.boardService.getBoardByNo(boardNo);
}

@Post()
createBoard(
@Body()
createBoarddto: CreateBoardDto,
): Promise<Board> {
return this.boardService.createBoard(createBoarddto);
}

@Delete('/:boardNo')
deleteBoard(@Param('boardNo', ParseIntPipe) boardNo): Promise<boolean> {
return this.boardService.deleteBoardByNo(boardNo);
}
}
3 changes: 3 additions & 0 deletions main-project/src/boards/boards.module.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BoardsController } from './boards.controller';
import { BoardsService } from './boards.service';
import { BoardRepository } from './repository/board.repository';

@Module({
imports: [TypeOrmModule.forFeature([BoardRepository])],
controllers: [BoardsController],
providers: [BoardsService],
})
Expand Down
43 changes: 41 additions & 2 deletions main-project/src/boards/boards.service.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,43 @@
import { Injectable } from '@nestjs/common';
import { Injectable, Logger, NotFoundException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { CreateBoardDto } from './dto/create-board.dto';
import { Board } from './entity/board.entity';
import { BoardRepository } from './repository/board.repository';

@Injectable()
export class BoardsService {}
export class BoardsService {
private logger = new Logger('BoardsController');

constructor(
@InjectRepository(BoardRepository)
private boardRepository: BoardRepository,
) {}

async createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardRepository.createBoard(createBoardDto);
}

async getAllBoards(): Promise<Board[]> {
return this.boardRepository.find();
}

async getBoardByNo(boardNo: number): Promise<Board> {
const found = await this.boardRepository.findOne(boardNo);

if (!found) {
new NotFoundException(`Can't find Board with boardNo ${boardNo}`);
}
return found;
}

async deleteBoardByNo(boardNo: number): Promise<boolean> {
const result = await this.boardRepository.delete(boardNo);

if (result.affected === 0) {
throw new NotFoundException(`Can't find Board with boardNo ${boardNo}`);
}

this.logger.debug(`Delete success :)`);
return true;
}
}
20 changes: 20 additions & 0 deletions main-project/src/boards/dto/create-board.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { IsBoolean, IsDate, IsNotEmpty, IsString } from 'class-validator';
export class CreateBoardDto {
@IsNotEmpty()
@IsString()
title: string;

@IsNotEmpty()
@IsString()
description: string;

@IsBoolean()
@IsNotEmpty()
done: boolean;

@IsString()
location: string;

@IsDate()
time: Date;
}
2 changes: 1 addition & 1 deletion main-project/src/boards/entity/board.bookmark.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

// fk없음, entity취합 후 생성예정
@Entity()
export class Board_bookmark extends BaseEntity {
export class BoardBookmark extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;
}
19 changes: 10 additions & 9 deletions main-project/src/boards/entity/board.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,32 +14,33 @@ export class Board 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;

@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' })
@Column({ type: 'date', nullable: true })
time: Date;

@CreateDateColumn()
created_date: Date;
@CreateDateColumn({ nullable: false })
createdDate: Date;

@UpdateDateColumn({ nullable: true })
updated_date: Date;
@UpdateDateColumn({ nullable: false })
updatedDate: Date;

@DeleteDateColumn({ nullable: true })
deleted_date: Date;
deletedDate: Date;
}
2 changes: 1 addition & 1 deletion main-project/src/boards/entity/board.member.info.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

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

Expand Down
31 changes: 31 additions & 0 deletions main-project/src/boards/repository/board.repository.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { Logger } from '@nestjs/common';
import { EntityRepository, Repository } from 'typeorm';
import { CreateBoardDto } from '../dto/create-board.dto';
import { Board } from '../entity/board.entity';

//db관련 CRUD 작업 하는 파일
@EntityRepository(Board)
export class BoardRepository extends Repository<Board> {
private logger = new Logger('BoardsRepository');

/**게시글 생성 */
async createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
const { title, description, done, location, time } = createBoardDto;

const board = this.create({
// 이미 repository에 들어왔으니 this는 class를 호출하는 것
title,
description,
done,
location,
time,
});

await this.save(board);

this.logger.debug(`creating new board success :)
title : ${title}`);

return board;
}
}

0 comments on commit 6ef5874

Please sign in to comment.