Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions jdk_21_maven/cs/rest/arimaa/.gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/mvnw text eol=lf
*.cmd text eol=crlf
37 changes: 37 additions & 0 deletions jdk_21_maven/cs/rest/arimaa/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
target/
.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

# .gitignore
.env

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/
Database/secrets.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.14/apache-maven-3.9.14-bin.zip
11 changes: 11 additions & 0 deletions jdk_21_maven/cs/rest/arimaa/Database/create_vm_db.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@


@echo off
REM Create db in a virtual environment. Cd into /database before running in command propmpt

docker-compose up -d
timeout /t 10
mysql --host=localhost --port=3307 --user=root --password=123456 < .\mysql\Sql_arimaa_init.sql
echo Database setup completed successfully.. I hope!
@REM "docker compose down" to remove environment
pause
15 changes: 15 additions & 0 deletions jdk_21_maven/cs/rest/arimaa/Database/docker-compose.mongodb.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# MongoDB (Document DB)
services:
mongodb:
image: mongo:7
container_name: arimaadockermongodb
ports:
- "27017:27017"
volumes:
- mongodb_data:/data/db
hostname: arimaadockermongodb

volumes:
mongodb_data:
driver: local

26 changes: 26 additions & 0 deletions jdk_21_maven/cs/rest/arimaa/Database/docker-compose.mysql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
services:
mysqldb:
image: mysql:9.5.0
container_name: arimaadockermysqldb
ports:
- "5000:3306"
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p${MYSQL_ROOT_PASSWORD} --silent"]
interval: 10s
timeout: 5s
retries: 30
start_period: 40s

volumes:
- mysql_data:/var/lib/mysql
- ./mysql:/docker-entrypoint-initdb.d

hostname: arimaadockermysqldb

volumes:
mysql_data:
driver: local
269 changes: 269 additions & 0 deletions jdk_21_maven/cs/rest/arimaa/Database/mysql/Sql_arimaa_10_init.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
-- MySQL Script generated by MySQL Workbench
-- Tue Feb 24 18:24:54 2026
-- Model: New Model Version: 1.0
-- 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 arimaadockermysqldb
-- -----------------------------------------------------

CREATE USER 'admin'@'%' IDENTIFIED BY 'AdminPassword123!';
CREATE USER 'user'@'%' IDENTIFIED BY 'UserPassword123!';

GRANT ALL PRIVILEGES ON arimaadockermysqldb.* TO 'admin'@'%';
GRANT SELECT, INSERT, UPDATE ON arimaadockermysqldb.* TO 'user'@'%';

FLUSH PRIVILEGES;
-- -----------------------------------------------------
-- Schema arimaadockermysqldb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `arimaadockermysqldb` DEFAULT CHARACTER SET utf8 ;
USE `arimaadockermysqldb` ;

-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Puzzles`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Puzzles` (
`id` INT NOT NULL,
`name` VARCHAR(45) NOT NULL,
`objective` VARCHAR(45) NOT NULL,
`playerSide` VARCHAR(6) NOT NULL,
`rounds` INT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `name_UNIQUE` (`name` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Countries`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Countries` (
`id` INT NOT NULL,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `name_UNIQUE` (`name` ASC) VISIBLE)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Players`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Players` (
`id` INT NOT NULL,
`username` VARCHAR(32) NOT NULL,
`email` VARCHAR(255) NULL,
`password` VARCHAR(32) NOT NULL,
`create_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`rating` INT NULL,
`RU` INT NULL,
`games_played` INT NULL,
`countries_id` INT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `username_UNIQUE` (`username`),
UNIQUE INDEX `email_UNIQUE` (`email`),
INDEX `fk_Players_Countries_idx` (`countries_id` ASC) VISIBLE,
INDEX `idx_players_rating` (`rating`),
INDEX `idx_players_ru` (`RU`),

CONSTRAINT `fk_Players_Countries`
FOREIGN KEY (`countries_id`)
REFERENCES `arimaadockermysqldb`.`Countries` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Events`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Events` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`isRated` TINYINT(1) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;



-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`GameTypes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`GameTypes` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`time_increment` INT NULL,
`time_reserve` INT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Matches`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Matches` (
`id` INT NOT NULL,
`termination_type` VARCHAR(45) NOT NULL,
`player_id_silver` INT NOT NULL,
`player_id_gold` INT NOT NULL,
`gold_rating` INT NULL,
`silver_rating` INT NULL,
`match_result` VARCHAR(45) NOT NULL,
`events_id` INT NOT NULL,
`gameTypes_id` INT NOT NULL,
`timestamp` TIMESTAMP NULL,
PRIMARY KEY (`id`),
INDEX `fk_Matches_Players_Silver_idx` (`player_id_silver` ASC) VISIBLE,
INDEX `fk_Matches_Players_Gold_idx` (`player_id_gold` ASC) VISIBLE,
INDEX `fk_Matches_Events_idx` (`events_id` ASC) VISIBLE,
INDEX `fk_Matches_GameTypes_idx` (`gameTypes_id` ASC) VISIBLE,
INDEX `idx_matches_termination_result` (`termination_type`, `match_result`),
INDEX `idx_matches_gametype_result` (`gameTypes_id`, `match_result`),
INDEX `idx_matches_event_result` (`events_id`, `match_result`),
INDEX `idx_matches_silver_timestamp` (`player_id_silver`, `timestamp`),
INDEX `idx_matches_gold_timestamp` (`player_id_gold`, `timestamp`),
INDEX `idx_matches_timestamp` (`timestamp`),

CONSTRAINT `fk_Matches_Players_Silver`
FOREIGN KEY (`player_id_silver`)
REFERENCES `arimaadockermysqldb`.`Players` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Matches_Players_Gold`
FOREIGN KEY (`player_id_gold`)
REFERENCES `arimaadockermysqldb`.`Players` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Matches_Events`
FOREIGN KEY (`events_id`)
REFERENCES `arimaadockermysqldb`.`Events` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Matches_GameTypes`
FOREIGN KEY (`gameTypes_id`)
REFERENCES `arimaadockermysqldb`.`GameTypes` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Position`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Position` (
`id` INT NOT NULL AUTO_INCREMENT,
`color` VARCHAR(6) NOT NULL,
`piece` VARCHAR(4) NOT NULL,
`cordinate` VARCHAR(2) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Moves`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Moves` (
`id` INT NOT NULL AUTO_INCREMENT,
`turn` INT NOT NULL,
`sequence` INT NOT NULL,
`direction` VARCHAR(1) NOT NULL,
`status` VARCHAR(1) NOT NULL, -- Død eller levende | 0 eller 1
`matches_id` INT NOT NULL,
`position_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_Moves_position_idx` (`position_id` ASC) VISIBLE,
INDEX `fk_Moves_Matches_idx` (`matches_id` ASC) VISIBLE,
INDEX `idx_moves_match_turn_sequence` (`matches_id`, `turn`, `sequence`),
CONSTRAINT `fk_Moves_position`
FOREIGN KEY (`position_id`)
REFERENCES `arimaadockermysqldb`.`Position` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Moves_Matches`
FOREIGN KEY (`matches_id`)
REFERENCES `arimaadockermysqldb`.`Matches` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`OpeningsByMatch`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`OpeningsByMatch` (
`id` INT NOT NULL AUTO_INCREMENT,
`matches_id` INT NOT NULL,
`position_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_OpeningsByMatch_position_idx` (`position_id` ASC) VISIBLE,
INDEX `fk_OpeningsByMatch_Matches_idx` (`matches_id` ASC) VISIBLE,
CONSTRAINT `fk_OpeningsByMatch_position`
FOREIGN KEY (`position_id`)
REFERENCES `arimaadockermysqldb`.`Position` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_OpeningsByMatch_Matches`
FOREIGN KEY (`matches_id`)
REFERENCES `arimaadockermysqldb`.`Matches` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`OpeningsByPuzzle`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`OpeningsByPuzzle` (
`id` INT NOT NULL AUTO_INCREMENT,
`position_id` INT NOT NULL,
`puzzles_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_OpeningsByPuzzle_position_idx` (`position_id` ASC) VISIBLE,
INDEX `fk_OOpeningsByPuzzle_puzzles_idx` (`puzzles_id` ASC) VISIBLE,
CONSTRAINT `fk_OpeningsByPuzzle_position`
FOREIGN KEY (`position_id`)
REFERENCES `arimaadockermysqldb`.`Position` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_OpeningsByPuzzle_puzzles`
FOREIGN KEY (`puzzles_id`)
REFERENCES `arimaadockermysqldb`.`Puzzles` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `arimaadockermysqldb`.`Solutions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `arimaadockermysqldb`.`Solutions` (
`id` INT NOT NULL AUTO_INCREMENT,
`turn` INT NOT NULL,
`sequence` INT NOT NULL,
`direction` VARCHAR(1) NOT NULL,
`status` VARCHAR(1) NOT NULL,
`position_id` INT NOT NULL,
`puzzles_id` INT NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_Solution_position_idx` (`position_id` ASC) VISIBLE,
INDEX `fk_Solution_puzzles_idx` (`puzzles_id` ASC) VISIBLE,
CONSTRAINT `fk_Solution_position`
FOREIGN KEY (`position_id`)
REFERENCES `arimaadockermysqldb`.`Position` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Solution_puzzles`
FOREIGN KEY (`puzzles_id`)
REFERENCES `arimaadockermysqldb`.`Puzzles` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;



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