diff --git a/README.md b/README.md
index b2f24c4..3675370 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
-# Gen Commiting Application
+# Commmit Craft API
+
+
## Requirements
- Java 17+
@@ -29,12 +31,12 @@
3. If you want to build the Docker image, use the following command:
```bash
- docker build -t gen-commiting .
+ docker build -t commmit-craft .
```
4. Run the Docker container:
```bash
- docker run -d -p 9000:9000 --name gen-commiting gen-commiting
+ docker run -d -p 8090:8090 --name commmit-craft commmit-craft
```
5. The application will be available at `http://localhost:8090`.
@@ -56,7 +58,7 @@ The `translate` module integrates with DeepL for machine translation. To use thi
## Configuration
-You can specify different profiles for the application. For example, to use the `kam` profile:
+You can specify different profiles for the application. For example, to use the `dev` profile:
1. In `application.yml`:
```properties
diff --git a/build.gradle b/build.gradle
index 2673540..2da365c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -70,6 +70,12 @@ dependencies {
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
+ implementation 'org.modelmapper:modelmapper:3.2.2'
+ implementation 'org.hibernate.validator:hibernate-validator:8.0.1.Final'
+ implementation 'org.glassfish:jakarta.el:4.0.2'
+ testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
+ testImplementation 'org.mockito:mockito-core:4.5.1'
+ testImplementation 'org.mockito:mockito-junit-jupiter:4.5.1'
}
dependencyManagement {
diff --git a/settings.gradle b/settings.gradle
index ed01c7a..b8713be 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,3 @@
-rootProject.name = 'gen'
+rootProject.name = 'commit-craft'
include 'translate'
diff --git a/src/main/java/pl/commit/craft/CommitCraftApplication.java b/src/main/java/pl/commit/craft/CommitCraftApplication.java
new file mode 100644
index 0000000..025cd4b
--- /dev/null
+++ b/src/main/java/pl/commit/craft/CommitCraftApplication.java
@@ -0,0 +1,13 @@
+package pl.commit.craft;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication(scanBasePackages = {"pl.commit.craft"})
+public class CommitCraftApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(CommitCraftApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/pl/commit/craft/controller/CommitTranslateController.java b/src/main/java/pl/commit/craft/controller/CommitTranslateController.java
new file mode 100644
index 0000000..c04a4c2
--- /dev/null
+++ b/src/main/java/pl/commit/craft/controller/CommitTranslateController.java
@@ -0,0 +1,28 @@
+package pl.commit.craft.controller;
+
+import org.springframework.web.bind.annotation.*;
+import pl.commit.craft.service.CommitTranslateService;
+
+@RestController
+@RequestMapping("/api/v1/commit-translate")
+public class CommitTranslateController {
+
+ private final CommitTranslateService commitTranslateService;
+
+ public CommitTranslateController(CommitTranslateService commitTranslateService) {
+ this.commitTranslateService = commitTranslateService;
+ }
+
+ @PostMapping("/craft")
+ public String generateCommit(@RequestBody CommitTranslateRequest commitTranslateRequest) {
+ return commitTranslateService.generateTranslateCommit(
+ commitTranslateRequest.major(),
+ commitTranslateRequest.type(),
+ commitTranslateRequest.component(),
+ commitTranslateRequest.changeDescription(),
+ commitTranslateRequest.details(),
+ commitTranslateRequest.wholeGitCommand(),
+ commitTranslateRequest.language()
+ );
+ }
+}
diff --git a/src/main/java/pl/commit/gen/controller/CommitTranslateRequest.java b/src/main/java/pl/commit/craft/controller/CommitTranslateRequest.java
similarity index 64%
rename from src/main/java/pl/commit/gen/controller/CommitTranslateRequest.java
rename to src/main/java/pl/commit/craft/controller/CommitTranslateRequest.java
index 672234a..0a2f0bd 100644
--- a/src/main/java/pl/commit/gen/controller/CommitTranslateRequest.java
+++ b/src/main/java/pl/commit/craft/controller/CommitTranslateRequest.java
@@ -1,4 +1,4 @@
-package pl.commit.gen.controller;
+package pl.commit.craft.controller;
public record CommitTranslateRequest(
String major,
@@ -6,5 +6,6 @@ public record CommitTranslateRequest(
String component,
String changeDescription,
String details,
- boolean wholeGitCommand
+ boolean wholeGitCommand,
+ String language
) {}
diff --git a/src/main/java/pl/commit/gen/error/ErrorResponseCommiting.java b/src/main/java/pl/commit/craft/error/ErrorResponseCommiting.java
similarity index 95%
rename from src/main/java/pl/commit/gen/error/ErrorResponseCommiting.java
rename to src/main/java/pl/commit/craft/error/ErrorResponseCommiting.java
index d3fe0ac..6ba784d 100644
--- a/src/main/java/pl/commit/gen/error/ErrorResponseCommiting.java
+++ b/src/main/java/pl/commit/craft/error/ErrorResponseCommiting.java
@@ -1,4 +1,4 @@
-package pl.commit.gen.error;
+package pl.commit.craft.error;
import lombok.Getter;
import lombok.Setter;
diff --git a/src/main/java/pl/commit/craft/error/RestExceptionHandler.java b/src/main/java/pl/commit/craft/error/RestExceptionHandler.java
new file mode 100644
index 0000000..d194312
--- /dev/null
+++ b/src/main/java/pl/commit/craft/error/RestExceptionHandler.java
@@ -0,0 +1,47 @@
+package pl.commit.craft.error;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.web.ErrorResponse;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.context.request.WebRequest;
+import java.time.LocalDateTime;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@ControllerAdvice
+public class RestExceptionHandler {
+
+ @ExceptionHandler(IllegalArgumentException.class)
+ public ResponseEntity handleIllegalArgumentException(IllegalArgumentException ex, WebRequest request) {
+ ErrorResponseCommiting errorResponseCommiting = new ErrorResponseCommiting("INVALID_ARGUMENT", ex.getMessage());
+ return new ResponseEntity<>(errorResponseCommiting, HttpStatus.BAD_REQUEST);
+ }
+
+ @ExceptionHandler(HttpMessageNotReadableException.class)
+ public ResponseEntity