Skip to content

Commit

Permalink
Incomplete(minho/board): board 테이블들 FK설정modern-agile-team#4
Browse files Browse the repository at this point in the history
  • Loading branch information
klaus9267 committed Sep 6, 2022
1 parent ae3f13e commit d3c7593
Show file tree
Hide file tree
Showing 9 changed files with 185 additions and 33 deletions.
57 changes: 50 additions & 7 deletions main-project/src/boards/boards.controller.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,64 @@
import { Body, Controller, Logger, Post } from '@nestjs/common';
import {
Body,
Controller,
Delete,
Get,
Logger,
Param,
Patch,
ParseIntPipe,
Post,
} from '@nestjs/common';
import { BoardsService } from './boards.service';
import { CreateBoardDto } from './dto/create-board.dto';
import { Board } from './entity/board.entity';
import { UpdateBoardDto } from './dto/update-board.dto';

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

constructor(private boardService: BoardsService) {}

@Get()
async getAllBoards(): Promise<object> {
const boards: object = await this.boardService.getAllBoards();
const response = {
success: true,
boards,
};

return response;
}

@Get('/:boardNo')
async getBoardByNo(@Param('boardNo') boardNo: number): Promise<object> {
const board: object = await this.boardService.getBoardByNo(boardNo);
const response = {
success: true,
board,
};

return response;
}

@Post()
// @UsePipes(ValidationPipe)
createBoard(
async createBoard(
@Body()
createBoarddto: CreateBoardDto,
): Promise<Board> {
// this.logger.debug(`User : ${user.username} creating a new board.`);
): Promise<object> {
const board: object = await this.boardService.createBoard(createBoarddto);
const response = { success: true, board };

return response;
}

@Delete('/:boardNo')
async deleteBoard(
@Param('boardNo', ParseIntPipe) boardNo: number,
): Promise<object> {
await this.boardService.deleteBoardByNo(boardNo);

return this.boardService.createBoard(createBoarddto);
return { success: true };
}
}
55 changes: 52 additions & 3 deletions main-project/src/boards/boards.service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { Injectable } from '@nestjs/common';
import { Injectable, NotFoundException } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { CreateBoardDto } from './dto/create-board.dto';
import { UpdateBoardDto } from './dto/update-board.dto';
import { Board } from './entity/board.entity';
import { BoardRepository } from './repository/board.repository';

Expand All @@ -11,7 +13,54 @@ export class BoardsService {
private boardRepository: BoardRepository,
) {}

createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
return this.boardRepository.createBoard(createBoardDto);
async createBoard(createBoardDto: CreateBoardDto): Promise<Board> {
try {
const board = await this.boardRepository.createBoard(createBoardDto);

// const memberInfo = this.boardRepository.createMemberInfo(createBoardDto);

// const response = { board: board };
// const response = { board: board, memberInfo: memberInfo };

return board;
} catch (error) {
throw error;
}
}

async getAllBoards(): Promise<Board[]> {
try {
return await this.boardRepository.find();
} catch (error) {
throw error;
}
}

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

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

return found;
} catch (error) {
throw error;
}
}

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

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

return true;
} catch (error) {
throw error;
}
}
}
35 changes: 35 additions & 0 deletions main-project/src/boards/dto/update-board.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {
IsBoolean,
IsDate,
IsNotEmpty,
IsNumber,
IsString,
} from 'class-validator';

export class UpdateBoardDto {
@IsNotEmpty()
@IsString()
title: string;

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

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

@IsString()
location: string;

@IsDate()
time: Date;

@IsNotEmpty()
@IsNumber()
male: number;

@IsNotEmpty()
@IsNumber()
female: number;
}
19 changes: 19 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,19 @@
import {
BaseEntity,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Board } from './board.entity';

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

@OneToOne((type) => Board, (board) => board.no)
@JoinColumn()
board: Board;
}
26 changes: 26 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,26 @@
import {
BaseEntity,
Column,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Board } from './board.entity';

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

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

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

@OneToOne((type) => Board, (board) => board.no)
@JoinColumn()
board: Board;
}
8 changes: 0 additions & 8 deletions main-project/src/boards/entity/board.bookmark.entity.ts

This file was deleted.

3 changes: 3 additions & 0 deletions main-project/src/boards/entity/board.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import {
CreateDateColumn,
DeleteDateColumn,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { BoardMemberInfo } from './board-member-info.entity';

// fk없음, entity취합 후 생성예정
@Entity()
Expand Down
14 changes: 0 additions & 14 deletions main-project/src/boards/entity/board.member.info.entity.ts

This file was deleted.

1 change: 0 additions & 1 deletion main-project/src/boards/repository/board.repository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ export class BoardRepository extends Repository<Board> {
const { title, description, done, location, time } = createBoardDto;

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

0 comments on commit d3c7593

Please sign in to comment.