diff --git a/api/Dockerfile b/api/Dockerfile new file mode 100644 index 00000000..472da99f --- /dev/null +++ b/api/Dockerfile @@ -0,0 +1,19 @@ +# -------- Stage 1: Build the jar using Gradle -------- +FROM gradle:9.2-jdk21 AS build +WORKDIR /app + +COPY settings.gradle.kts build.gradle.kts ./ +COPY gradle ./gradle + +COPY src ./src + +RUN gradle clean bootJar --no-daemon + +FROM eclipse-temurin:21-jdk-alpine +WORKDIR /app + +COPY --from=build /app/build/libs/*.jar app.jar + +EXPOSE 8000 + +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 3189751b..a5325448 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -36,6 +36,7 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter-elasticsearch") implementation("org.springframework.boot:spring-boot-starter-mongodb") implementation("org.springframework.boot:spring-boot-starter-opentelemetry") + implementation("org.springframework.boot:spring-boot-starter-data-mongodb") developmentOnly("org.springframework.boot:spring-boot-devtools") developmentOnly("org.springframework.boot:spring-boot-docker-compose") diff --git a/api/compose.yaml b/api/compose.yaml index a45e6bfd..2ce3dd19 100644 --- a/api/compose.yaml +++ b/api/compose.yaml @@ -30,11 +30,27 @@ services: - "8300:9090" volumes: - ./prometheus.yaml:/etc/prometheus/prometheus.yml + mongodb: - image: 'mongo:latest' + image: mongo:latest environment: - - 'MONGO_INITDB_DATABASE=mydatabase' - - 'MONGO_INITDB_ROOT_PASSWORD=secret' - - 'MONGO_INITDB_ROOT_USERNAME=root' + - MONGO_INITDB_DATABASE=my-database + - MONGO_INITDB_ROOT_PASSWORD=secret + - MONGO_INITDB_ROOT_USERNAME=root ports: - - '8400:27017' + - "8400:27017" + volumes: + - ./mongo-data:/data/db + + #mongo-express: + # image: mongo-express:latest + # depends_on: + # - mongodb + # ports: + # - "8401:8081" + # environment: + # - ME_CONFIG_MONGODB_SERVER=mongodb + # - ME_CONFIG_MONGODB_PORT=27017 + # - ME_CONFIG_MONGODB_ADMINUSERNAME=root + # - ME_CONFIG_MONGODB_ADMINPASSWORD=secret + # - ME_CONFIG_MONGODB_AUTH_DATABASE=admin \ No newline at end of file diff --git a/api/src/main/java/be/naaturel/boardmateapi/configurations/HttpRequests.java b/api/src/main/java/be/naaturel/boardmateapi/configurations/HttpRequests.java index 4332cc5c..54418bbb 100644 --- a/api/src/main/java/be/naaturel/boardmateapi/configurations/HttpRequests.java +++ b/api/src/main/java/be/naaturel/boardmateapi/configurations/HttpRequests.java @@ -1,6 +1,5 @@ package be.naaturel.boardmateapi.configurations; -import be.naaturel.boardmateapi.Interceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; diff --git a/api/src/main/java/be/naaturel/boardmateapi/Interceptor.java b/api/src/main/java/be/naaturel/boardmateapi/configurations/Interceptor.java similarity index 89% rename from api/src/main/java/be/naaturel/boardmateapi/Interceptor.java rename to api/src/main/java/be/naaturel/boardmateapi/configurations/Interceptor.java index 1519b5c6..e13c4864 100644 --- a/api/src/main/java/be/naaturel/boardmateapi/Interceptor.java +++ b/api/src/main/java/be/naaturel/boardmateapi/configurations/Interceptor.java @@ -1,4 +1,4 @@ -package be.naaturel.boardmateapi; +package be.naaturel.boardmateapi.configurations; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/api/src/main/java/be/naaturel/boardmateapi/controllers/PartyController.java b/api/src/main/java/be/naaturel/boardmateapi/controllers/PartyController.java new file mode 100644 index 00000000..080dfe05 --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/controllers/PartyController.java @@ -0,0 +1,26 @@ +package be.naaturel.boardmateapi.controllers; + +import org.apache.coyote.Response; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class PartyController { + + + public PartyController(){ + + } + + public ResponseEntity CreateParty(){ + return null; + } + + public ResponseEntity RetrieveParty(int id){ + return null; + } + + public ResponseEntity AddMove(){ + return null; + } +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/models/Coordinate.java b/api/src/main/java/be/naaturel/boardmateapi/models/Coordinate.java new file mode 100644 index 00000000..fee79f38 --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/models/Coordinate.java @@ -0,0 +1,18 @@ +package be.naaturel.boardmateapi.models; + +public class Coordinate { + + private int row; + private String file; + + public Coordinate(int row, String file){ + this.row = row; + this.file = file; + } + + @Override + public String toString(){ + return String.format("%s%d", file, row); + } + +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/models/Move.java b/api/src/main/java/be/naaturel/boardmateapi/models/Move.java new file mode 100644 index 00000000..c37249cc --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/models/Move.java @@ -0,0 +1,13 @@ +package be.naaturel.boardmateapi.models; + +public class Move { + + private Piece piece; + private Coordinate coordinate; + + public Move(Piece piece, Coordinate coordinate){ + this.piece = piece; + this.coordinate = coordinate; + } + +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/models/Party.java b/api/src/main/java/be/naaturel/boardmateapi/models/Party.java new file mode 100644 index 00000000..9ab88fc3 --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/models/Party.java @@ -0,0 +1,9 @@ +package be.naaturel.boardmateapi.models; + +import java.util.List; + +public class Party { + + private List moves; + +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/models/Piece.java b/api/src/main/java/be/naaturel/boardmateapi/models/Piece.java new file mode 100644 index 00000000..cd34ad1b --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/models/Piece.java @@ -0,0 +1,11 @@ +package be.naaturel.boardmateapi.models; + +public class Piece { + + + + public Piece(){ + + } + +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/repository/PartyDto.java b/api/src/main/java/be/naaturel/boardmateapi/repository/PartyDto.java new file mode 100644 index 00000000..a5f22012 --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/repository/PartyDto.java @@ -0,0 +1,11 @@ +package be.naaturel.boardmateapi.repository; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document(collection = "parties") +public class PartyDto { + @Id + private String id; + private String[] moves; +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/repository/PartyRepo.java b/api/src/main/java/be/naaturel/boardmateapi/repository/PartyRepo.java new file mode 100644 index 00000000..67ddb922 --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/repository/PartyRepo.java @@ -0,0 +1,10 @@ +package be.naaturel.boardmateapi.repository; + +import be.naaturel.boardmateapi.models.Party; +import org.springframework.data.mongodb.repository.MongoRepository; + +import java.util.Optional; + +public interface PartyRepo extends MongoRepository { + Optional findById(String id); +} \ No newline at end of file diff --git a/api/src/main/java/be/naaturel/boardmateapi/repository/test/CustomPartyRepo.java b/api/src/main/java/be/naaturel/boardmateapi/repository/test/CustomPartyRepo.java new file mode 100644 index 00000000..e03f741c --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/repository/test/CustomPartyRepo.java @@ -0,0 +1,9 @@ +package be.naaturel.boardmateapi.repository.test; + +import be.naaturel.boardmateapi.models.Party; + +public interface CustomPartyRepo { + public Party find(String id); + public String create(); + public String registerMove(); +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/repository/test/CustomPartyRepoImpl.java b/api/src/main/java/be/naaturel/boardmateapi/repository/test/CustomPartyRepoImpl.java new file mode 100644 index 00000000..19346aec --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/repository/test/CustomPartyRepoImpl.java @@ -0,0 +1,21 @@ +package be.naaturel.boardmateapi.repository.test; + +import be.naaturel.boardmateapi.models.Party; + +public class CustomPartyRepoImpl implements CustomPartyRepo{ + + @Override + public Party find(String id) { + return null; + } + + @Override + public String create() { + return ""; + } + + @Override + public String registerMove() { + return ""; + } +} diff --git a/api/src/main/java/be/naaturel/boardmateapi/services/PartyService.java b/api/src/main/java/be/naaturel/boardmateapi/services/PartyService.java new file mode 100644 index 00000000..d672db92 --- /dev/null +++ b/api/src/main/java/be/naaturel/boardmateapi/services/PartyService.java @@ -0,0 +1,28 @@ +package be.naaturel.boardmateapi.services; + +import be.naaturel.boardmateapi.models.Party; +import be.naaturel.boardmateapi.repository.test.CustomPartyRepoImpl; +import org.springframework.stereotype.Service; + +@Service +public class PartyService { + + private final CustomPartyRepoImpl repo; + + public PartyService(CustomPartyRepoImpl repo){ + this.repo = repo; + } + + public Party retrieveParty(String id){ + return null; + } + + public String create(){ + return null; + } + + public String addMove(){ + return null; + } + +}