Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1, 2단계 - Spring 적용하기] 인비(김태희) 미션 제출합니다. #218

Merged
merged 54 commits into from
Apr 19, 2021
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
08db9ee
feat: build.gradle mustache 의존성 추가
taehee-kim-dev Apr 13, 2021
e109d11
refactor: 사용하지 않는 파일 삭제
taehee-kim-dev Apr 13, 2021
a5b1e74
feat: Spring MVC, jdbcTemplate 적용
taehee-kim-dev Apr 13, 2021
f903e39
refactor: 테스트 의존성 주입 방식으로 변경
taehee-kim-dev Apr 13, 2021
050ecb2
docs: README 업데이트
taehee-kim-dev Apr 13, 2021
c3830f9
feat: sql 파일 추가
taehee-kim-dev Apr 13, 2021
bf02c37
refactor: 패키지 경로 수정
taehee-kim-dev Apr 16, 2021
5a8113a
refactor: 메인 화면 조회, 게임 생성 기능 추가
taehee-kim-dev Apr 16, 2021
80194b8
feat: 테이블 구조 변경
taehee-kim-dev Apr 16, 2021
2b4410a
feat: 게임 상태 반환 기능 추가
taehee-kim-dev Apr 16, 2021
c5a06df
refactor: 특정 게임 삭제 기능 추가
taehee-kim-dev Apr 16, 2021
fd47d46
feat: Thymeleaf 의존성 추가
taehee-kim-dev Apr 16, 2021
035e162
refactor: board 기물 출력 기능 수정
taehee-kim-dev Apr 16, 2021
0c526c2
feat: 체스 보드 위에 마우스 올렸을 때 색깔 어두워지는 기능 추가
taehee-kim-dev Apr 16, 2021
6d4def3
refactor: 게임 삭제 컨트롤러 분리 추가
taehee-kim-dev Apr 17, 2021
4b521a3
fix: javascript move 전송 버그 수정
taehee-kim-dev Apr 17, 2021
a7f2391
refactor: 말 이동 기능 리팩토링
taehee-kim-dev Apr 17, 2021
2bf1fd9
refactor: 클래스 이름, 패키지 경로 수정
taehee-kim-dev Apr 17, 2021
6c17710
refactor: 사용하지 않는 파일 삭제
taehee-kim-dev Apr 17, 2021
aaa79c8
refactor: application.properties 수정
taehee-kim-dev Apr 17, 2021
86b1469
refactor: 사용하지 않는 파일 삭제
taehee-kim-dev Apr 17, 2021
aca18f2
feat: h2 database 설정
taehee-kim-dev Apr 17, 2021
940a470
feat: chess_game.sql 생성
taehee-kim-dev Apr 17, 2021
8d63a1b
refactor: 테스트 패키지 정리
taehee-kim-dev Apr 17, 2021
d28c672
refactor: ChessGameRepository 테스트 수정
taehee-kim-dev Apr 17, 2021
96fc045
refactor: ChessGame 테스트 수정, DB 테이블 스키마에서 각 팀 점수 컬럼 제거
taehee-kim-dev Apr 17, 2021
95797d6
refactor: 함수 접근제어자 범위 수정
taehee-kim-dev Apr 17, 2021
fc3fddf
refactor: 출발 위치 유효성 검사 테스트 수정
taehee-kim-dev Apr 17, 2021
66a2ab8
refactor: ChessGame에서 score 관련 필드 삭제
taehee-kim-dev Apr 17, 2021
34010f2
refactor: King이 잡혔는지 확인하는 테스트 수정
taehee-kim-dev Apr 17, 2021
f7c1c8c
refactor: 점수 계산 테스트 수정
taehee-kim-dev Apr 17, 2021
f79de16
refactor: 테스트용 유틸 클래스 PositionConverter, 테스트 수정
taehee-kim-dev Apr 17, 2021
ad0b2a5
refactor: 함수 이름 변경
taehee-kim-dev Apr 17, 2021
d0e14ad
refactor: 이동, 이동불가 검사 함수 수정
taehee-kim-dev Apr 17, 2021
ad80e6f
refactor: Rook 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
3b521b2
refactor: Bishop 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
8dd7e2a
refactor: Queen 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
3ae44ab
refactor: King 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
b328592
refactor: Knight 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
5c98ecb
refactor: 흑 팀 Pawn 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
8e2ed28
refactor: 백 팀 Pawn 이동 테스트 수정
taehee-kim-dev Apr 17, 2021
65c00e0
refactor: 사용하지 않는 파일 삭제
taehee-kim-dev Apr 17, 2021
79792bf
refactor: 위치 캐싱 테스트 수정
taehee-kim-dev Apr 17, 2021
32e64c5
refactor: 위치 테스트 수정
taehee-kim-dev Apr 17, 2021
d843179
refactor: 패키지 경로 수정
taehee-kim-dev Apr 17, 2021
7b3a973
refactor: 매개변수 수정
taehee-kim-dev Apr 17, 2021
48180de
refactor: Spring을 사용하지 않고 콘솔 게임을 실행하도록 수정
taehee-kim-dev Apr 17, 2021
d3ed969
refactor: 자동 포맷팅 적용
taehee-kim-dev Apr 17, 2021
b98144a
refactor: Application들 패키지 경로 이동
taehee-kim-dev Apr 17, 2021
c41518b
fix: 기물 이동 요청 JSON key값 수정
taehee-kim-dev Apr 17, 2021
eadccfc
feat: 사용하지 않는 설정 삭제
taehee-kim-dev Apr 17, 2021
28dad58
refactor: 패키지 이동
taehee-kim-dev Apr 17, 2021
124a189
feat: 테스트 sql logging level DEBUG로 설정
taehee-kim-dev Apr 17, 2021
f7ab3e1
refactor: DTO setter 삭제, DTO -> Dto 로 네이밍 변경
taehee-kim-dev Apr 18, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# ♟ java-chess
체스 게임 구현을 위한 저장소

<br>

## 1, 2단계 - Spring 적용하기

- [x] 모든 객체 Spring Bean으로 등록
- [x] 모든 객체 생성자 Bean 주입
- [x] Spark Java 제거
- [x] 정적 파일 경로 Spring에 맞게 이동
- [x] Controller에 Spring Web MVC 적용
- [x] DAO에 JdbcTemplate 적용
- [x] 테스트 Bean 주입 방식으로 수정
- [x] Profile로 Web, Console 개별 Bean 등록 설정

<br>
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ dependencies {

implementation 'net.rakugakibox.spring.boot:logback-access-spring-boot-starter:2.7.1'
implementation 'pl.allegro.tech.boot:handlebars-spring-boot-starter:0.3.1'
implementation 'org.springframework.boot:spring-boot-starter-mustache'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'io.rest-assured:rest-assured:3.3.0'
Expand Down
215 changes: 215 additions & 0 deletions chess_game.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
create user 'inbi'@'localhost' identified by '1234';

grant all privileges on *.* to 'inbi'@'localhost';

flush privileges;

CREATE DATABASE chess_game DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

use chess_game;


-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema mydb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema chess_game
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema chess_game
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `chess_game` DEFAULT CHARACTER SET utf8 ;
USE `chess_game` ;

-- -----------------------------------------------------
-- Table `chess_game`.`chess_game`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chess_game`.`chess_game` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(255) NOT NULL DEFAULT '제목 없는 방',
`current_turn_team_color` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 684
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `chess_game`.`piece`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chess_game`.`piece` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`color` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 13
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `chess_game`.`player`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chess_game`.`player` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`team_color` VARCHAR(255) NOT NULL,
`chess_game_id` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (`id`, `chess_game_id`),
INDEX `fk_player_chess_game1_idx` (`chess_game_id` ASC) VISIBLE,
CONSTRAINT `fk_player_chess_game1`
FOREIGN KEY (`chess_game_id`)
REFERENCES `chess_game`.`chess_game` (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 1277
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `chess_game`.`position`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chess_game`.`position` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`file_value` VARCHAR(255) NOT NULL,
`rank_value` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 65
DEFAULT CHARACTER SET = utf8;


-- -----------------------------------------------------
-- Table `chess_game`.`player_piece_position`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chess_game`.`player_piece_position` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`player_id` BIGINT UNSIGNED NOT NULL,
`piece_id` BIGINT UNSIGNED NOT NULL,
`position_id` BIGINT UNSIGNED NOT NULL,
PRIMARY KEY (`id`, `player_id`, `piece_id`, `position_id`),
INDEX `fk_piece_position_piece_idx` (`piece_id` ASC) VISIBLE,
INDEX `fk_piece_position_position1_idx` (`position_id` ASC) VISIBLE,
INDEX `fk_piece_position_player1_idx` (`player_id` ASC) VISIBLE,
CONSTRAINT `fk_piece_position_piece`
FOREIGN KEY (`piece_id`)
REFERENCES `chess_game`.`piece` (`id`),
CONSTRAINT `fk_piece_position_player1`
FOREIGN KEY (`player_id`)
REFERENCES `chess_game`.`player` (`id`),
CONSTRAINT `fk_piece_position_position1`
FOREIGN KEY (`position_id`)
REFERENCES `chess_game`.`position` (`id`))
ENGINE = InnoDB
AUTO_INCREMENT = 2927
DEFAULT CHARACTER SET = utf8;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;


-- ----------------------------------------------------
-- queries
-- ----------------------------------------------------

-- ----------------------------------------------------
-- position
-- ----------------------------------------------------

INSERT INTO position (file_value, rank_value) VALUES ('a', '1');
INSERT INTO position (file_value, rank_value) VALUES ('b', '1');
INSERT INTO position (file_value, rank_value) VALUES ('c', '1');
INSERT INTO position (file_value, rank_value) VALUES ('d', '1');
INSERT INTO position (file_value, rank_value) VALUES ('e', '1');
INSERT INTO position (file_value, rank_value) VALUES ('f', '1');
INSERT INTO position (file_value, rank_value) VALUES ('g', '1');
INSERT INTO position (file_value, rank_value) VALUES ('h', '1');

INSERT INTO position (file_value, rank_value) VALUES ('a', '2');
INSERT INTO position (file_value, rank_value) VALUES ('b', '2');
INSERT INTO position (file_value, rank_value) VALUES ('c', '2');
INSERT INTO position (file_value, rank_value) VALUES ('d', '2');
INSERT INTO position (file_value, rank_value) VALUES ('e', '2');
INSERT INTO position (file_value, rank_value) VALUES ('f', '2');
INSERT INTO position (file_value, rank_value) VALUES ('g', '2');
INSERT INTO position (file_value, rank_value) VALUES ('h', '2');

INSERT INTO position (file_value, rank_value) VALUES ('a', '3');
INSERT INTO position (file_value, rank_value) VALUES ('b', '3');
INSERT INTO position (file_value, rank_value) VALUES ('c', '3');
INSERT INTO position (file_value, rank_value) VALUES ('d', '3');
INSERT INTO position (file_value, rank_value) VALUES ('e', '3');
INSERT INTO position (file_value, rank_value) VALUES ('f', '3');
INSERT INTO position (file_value, rank_value) VALUES ('g', '3');
INSERT INTO position (file_value, rank_value) VALUES ('h', '3');

INSERT INTO position (file_value, rank_value) VALUES ('a', '4');
INSERT INTO position (file_value, rank_value) VALUES ('b', '4');
INSERT INTO position (file_value, rank_value) VALUES ('c', '4');
INSERT INTO position (file_value, rank_value) VALUES ('d', '4');
INSERT INTO position (file_value, rank_value) VALUES ('e', '4');
INSERT INTO position (file_value, rank_value) VALUES ('f', '4');
INSERT INTO position (file_value, rank_value) VALUES ('g', '4');
INSERT INTO position (file_value, rank_value) VALUES ('h', '4');

INSERT INTO position (file_value, rank_value) VALUES ('a', '5');
INSERT INTO position (file_value, rank_value) VALUES ('b', '5');
INSERT INTO position (file_value, rank_value) VALUES ('c', '5');
INSERT INTO position (file_value, rank_value) VALUES ('d', '5');
INSERT INTO position (file_value, rank_value) VALUES ('e', '5');
INSERT INTO position (file_value, rank_value) VALUES ('f', '5');
INSERT INTO position (file_value, rank_value) VALUES ('g', '5');
INSERT INTO position (file_value, rank_value) VALUES ('h', '5');

INSERT INTO position (file_value, rank_value) VALUES ('a', '6');
INSERT INTO position (file_value, rank_value) VALUES ('b', '6');
INSERT INTO position (file_value, rank_value) VALUES ('c', '6');
INSERT INTO position (file_value, rank_value) VALUES ('d', '6');
INSERT INTO position (file_value, rank_value) VALUES ('e', '6');
INSERT INTO position (file_value, rank_value) VALUES ('f', '6');
INSERT INTO position (file_value, rank_value) VALUES ('g', '6');
INSERT INTO position (file_value, rank_value) VALUES ('h', '6');

INSERT INTO position (file_value, rank_value) VALUES ('a', '7');
INSERT INTO position (file_value, rank_value) VALUES ('b', '7');
INSERT INTO position (file_value, rank_value) VALUES ('c', '7');
INSERT INTO position (file_value, rank_value) VALUES ('d', '7');
INSERT INTO position (file_value, rank_value) VALUES ('e', '7');
INSERT INTO position (file_value, rank_value) VALUES ('f', '7');
INSERT INTO position (file_value, rank_value) VALUES ('g', '7');
INSERT INTO position (file_value, rank_value) VALUES ('h', '7');

INSERT INTO position (file_value, rank_value) VALUES ('a', '8');
INSERT INTO position (file_value, rank_value) VALUES ('b', '8');
INSERT INTO position (file_value, rank_value) VALUES ('c', '8');
INSERT INTO position (file_value, rank_value) VALUES ('d', '8');
INSERT INTO position (file_value, rank_value) VALUES ('e', '8');
INSERT INTO position (file_value, rank_value) VALUES ('f', '8');
INSERT INTO position (file_value, rank_value) VALUES ('g', '8');
INSERT INTO position (file_value, rank_value) VALUES ('h', '8');


-- ----------------------------------------------------
-- piece
-- ----------------------------------------------------

INSERT INTO piece (name, color) VALUES ('PAWN', 'white');
INSERT INTO piece (name, color) VALUES ('ROOK', 'white');
INSERT INTO piece (name, color) VALUES ('BISHOP', 'white');
INSERT INTO piece (name, color) VALUES ('KNIGHT', 'white');
INSERT INTO piece (name, color) VALUES ('QUEEN', 'white');
INSERT INTO piece (name, color) VALUES ('KING', 'white');

INSERT INTO piece (name, color) VALUES ('PAWN', 'black');
INSERT INTO piece (name, color) VALUES ('ROOK', 'black');
INSERT INTO piece (name, color) VALUES ('BISHOP', 'black');
INSERT INTO piece (name, color) VALUES ('KNIGHT', 'black');
INSERT INTO piece (name, color) VALUES ('QUEEN', 'black');
INSERT INTO piece (name, color) VALUES ('KING', 'black');
12 changes: 12 additions & 0 deletions src/main/java/chess/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package chess;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
22 changes: 0 additions & 22 deletions src/main/java/chess/SparkChessApplication.java

This file was deleted.

20 changes: 0 additions & 20 deletions src/main/java/chess/SpringChessApplication.java

This file was deleted.