From 093134d36c6844ba02a36a28d5d044f09291cd1d Mon Sep 17 00:00:00 2001 From: Janis Date: Wed, 22 Apr 2026 10:09:35 +0200 Subject: [PATCH] feat(rule): Rules as a microservice (#39) Co-authored-by: LQ63 Co-authored-by: TeamCity Reviewed-on: https://git.janis-eccarius.de/NowChess/NowChessSystems/pulls/39 --- .idea/scala_compiler.xml | 2 +- build.gradle.kts | 2 + .../de/nowchess/api}/rules/RuleSet.scala | 4 +- .../de/nowchess/bot/bots/ClassicalBot.scala | 2 +- .../de/nowchess/bot/bots/HybridBot.scala | 2 +- .../scala/de/nowchess/bot/bots/NNUEBot.scala | 2 +- .../nowchess/bot/logic/AlphaBetaSearch.scala | 2 +- .../de/nowchess/bot/AlphaBetaSearchTest.scala | 2 +- .../de/nowchess/bot/ClassicalBotTest.scala | 2 +- .../scala/de/nowchess/bot/HybridBotTest.scala | 2 +- modules/core/build.gradle.kts | 2 +- .../core/src/main/resources/application.yml | 2 + .../chess/adapter/RuleSetRestAdapter.scala | 51 +++ .../chess/client/RuleServiceClient.scala | 74 +++++ .../nowchess/chess/config/JacksonConfig.scala | 14 +- .../de/nowchess/chess/engine/GameEngine.scala | 5 +- .../chess/json/MoveTypeDeserializer.scala | 19 ++ .../chess/json/MoveTypeSerializer.scala | 23 ++ .../chess/json/SquareDeserializer.scala | 9 + .../chess/json/SquareSerializer.scala | 9 + .../chess/resource/GameResource.scala | 7 +- .../adapter/RuleSetRestAdapterTest.scala | 109 +++++++ .../chess/engine/EngineTestHelpers.scala | 2 +- .../engine/GameEngineDrawOfferTest.scala | 41 +-- .../engine/GameEngineGameEndingTest.scala | 7 +- .../engine/GameEngineIntegrationTest.scala | 24 +- .../chess/engine/GameEngineLoadGameTest.scala | 12 +- .../chess/engine/GameEngineNotationTest.scala | 9 +- .../engine/GameEnginePromotionTest.scala | 4 +- .../chess/engine/GameEngineResignTest.scala | 11 +- .../chess/json/JsonSerializersTest.scala | 87 +++++ .../chess/registry/GameRegistryImplTest.scala | 22 +- .../GameResourceIntegrationTest.scala | 35 +- modules/rule/build.gradle.kts | 49 ++- modules/rule/src/main/docker/Dockerfile.jvm | 100 ++++++ .../src/main/docker/Dockerfile.legacy-jar | 96 ++++++ .../rule/src/main/docker/Dockerfile.native | 29 ++ .../src/main/docker/Dockerfile.native-micro | 32 ++ .../rule/src/main/resources/application.yml | 5 + .../nowchess/rules/config/JacksonConfig.scala | 29 ++ .../rules/config/NativeReflectionConfig.scala | 28 ++ .../scala/de/nowchess/rules/dto/Dtos.scala | 8 + .../rules/json/MoveTypeDeserializer.scala | 19 ++ .../rules/json/MoveTypeSerializer.scala | 23 ++ .../rules/json/SquareDeserializer.scala | 9 + .../rules/json/SquareKeyDeserializer.scala | 8 + .../rules/json/SquareKeySerializer.scala | 9 + .../rules/json/SquareSerializer.scala | 9 + .../rules/resource/RuleSetResource.scala | 90 ++++++ .../de/nowchess/rules/sets/DefaultRules.scala | 2 +- .../rules/config/JacksonConfigTest.scala | 30 ++ .../rules/json/JsonSerializersTest.scala | 102 ++++++ .../rules/resource/RuleSetResourceTest.scala | 301 ++++++++++++++++++ .../resource/RuleSetResourceUnitTest.scala | 153 +++++++++ 54 files changed, 1655 insertions(+), 76 deletions(-) rename modules/{rule/src/main/scala/de/nowchess => api/src/main/scala/de/nowchess/api}/rules/RuleSet.scala (98%) create mode 100644 modules/core/src/main/scala/de/nowchess/chess/adapter/RuleSetRestAdapter.scala create mode 100644 modules/core/src/main/scala/de/nowchess/chess/client/RuleServiceClient.scala create mode 100644 modules/core/src/main/scala/de/nowchess/chess/json/MoveTypeDeserializer.scala create mode 100644 modules/core/src/main/scala/de/nowchess/chess/json/MoveTypeSerializer.scala create mode 100644 modules/core/src/main/scala/de/nowchess/chess/json/SquareDeserializer.scala create mode 100644 modules/core/src/main/scala/de/nowchess/chess/json/SquareSerializer.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/adapter/RuleSetRestAdapterTest.scala create mode 100644 modules/core/src/test/scala/de/nowchess/chess/json/JsonSerializersTest.scala create mode 100644 modules/rule/src/main/docker/Dockerfile.jvm create mode 100644 modules/rule/src/main/docker/Dockerfile.legacy-jar create mode 100644 modules/rule/src/main/docker/Dockerfile.native create mode 100644 modules/rule/src/main/docker/Dockerfile.native-micro create mode 100644 modules/rule/src/main/resources/application.yml create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/config/JacksonConfig.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/config/NativeReflectionConfig.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/dto/Dtos.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/json/MoveTypeDeserializer.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/json/MoveTypeSerializer.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/json/SquareDeserializer.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/json/SquareKeyDeserializer.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/json/SquareKeySerializer.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/json/SquareSerializer.scala create mode 100644 modules/rule/src/main/scala/de/nowchess/rules/resource/RuleSetResource.scala create mode 100644 modules/rule/src/test/scala/de/nowchess/rules/config/JacksonConfigTest.scala create mode 100644 modules/rule/src/test/scala/de/nowchess/rules/json/JsonSerializersTest.scala create mode 100644 modules/rule/src/test/scala/de/nowchess/rules/resource/RuleSetResourceTest.scala create mode 100644 modules/rule/src/test/scala/de/nowchess/rules/resource/RuleSetResourceUnitTest.scala diff --git a/.idea/scala_compiler.xml b/.idea/scala_compiler.xml index 5c60cfe..f2eb6d2 100644 --- a/.idea/scala_compiler.xml +++ b/.idea/scala_compiler.xml @@ -5,7 +5,7 @@