diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
new file mode 100644
index 0000000..26779d9
--- /dev/null
+++ b/.github/workflows/build-and-test.yml
@@ -0,0 +1,37 @@
+name: Build and Test
+on:
+ push:
+ branches:
+ - "main"
+ pull_request:
+ branches:
+ - "main"
+
+jobs:
+ build-and-test:
+ runs-on: ubuntu-latest
+
+ steps:
+ # Checks out code from GitHub
+ - name: Checkout code
+ uses: actions/checkout@v6
+
+ # Sets up Java 25 (Temurin) and cache Maven-dependencies
+ - name: Set up JDK 25
+ uses: actions/setup-java@v5
+ with:
+ java-version: '25'
+ distribution: 'temurin'
+ cache: 'maven'
+
+ # Make sure Maven Wrapper is executable
+ - name: Make mvnw executable
+ run: chmod +x mvnw
+
+ # Compile and run tests
+ - name: Compile and run tests
+ run: ./mvnw -B test
+
+ # Control code format with spotless
+ - name: Run spotless check
+ run: ./mvnw -B spotless:check
diff --git a/pom.xml b/pom.xml
index a47ba94..c96890d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,10 +38,10 @@
org.springframework.boot
spring-boot-starter-data-jpa
-
- org.springframework.boot
- spring-boot-starter-flyway
-
+
+
+
+
org.springframework.boot
spring-boot-starter-security
@@ -62,10 +62,10 @@
org.springframework.boot
spring-boot-starter-webmvc
-
- org.flywaydb
- flyway-database-postgresql
-
+
+
+
+
org.thymeleaf.extras
thymeleaf-extras-springsecurity6
@@ -98,11 +98,11 @@
spring-boot-starter-data-jpa-test
test
-
- org.springframework.boot
- spring-boot-starter-flyway-test
- test
-
+
+
+
+
+
org.springframework.boot
spring-boot-starter-security-oauth2-client-test
@@ -158,10 +158,44 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
+
+
org.springframework.boot
spring-boot-maven-plugin
+
+ com.diffplug.spotless
+ spotless-maven-plugin
+ 2.44.3
+
+
+
+
+
+
+
+
+ verify
+
+
+ check
+
+
+
+
+
diff --git a/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java b/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java
index e3e7cd4..d49163f 100644
--- a/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java
+++ b/src/main/java/org/example/visacasemanagementsystem/audit/entity/AuditLog.java
@@ -24,18 +24,14 @@ public class AuditLog {
@Column(name = "audit_id", nullable = false)
private Long id;
- @NotNull
- @CreatedDate
+ @NotNull @CreatedDate
private LocalDateTime timeStamp;
- @NotNull
- private Long userId; // Vem gjorde vad?
+ @NotNull private Long userId; // Vem gjorde vad?
- @NotNull
- private Long visaCaseId; // Vilket ärende rör det?
+ @NotNull private Long visaCaseId; // Vilket ärende rör det?
- @NotNull
- @Enumerated(EnumType.STRING)
+ @NotNull @Enumerated(EnumType.STRING)
private AuditEventType auditEventType;
private String description; // Beskrivning av händelse
diff --git a/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java b/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java
index cb0c3bd..0e9f516 100644
--- a/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java
+++ b/src/main/java/org/example/visacasemanagementsystem/audit/mapper/AuditMapper.java
@@ -5,7 +5,6 @@
import org.example.visacasemanagementsystem.audit.entity.AuditLog;
import org.springframework.stereotype.Component;
-import java.time.LocalDateTime;
@Component
public class AuditMapper {
diff --git a/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java b/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java
index 0ae9a1e..128f026 100644
--- a/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java
+++ b/src/main/java/org/example/visacasemanagementsystem/comment/entity/Comment.java
@@ -33,8 +33,7 @@ public class Comment {
@JoinColumn(name = "author_id", nullable = false)
private User author;
- @NotBlank
- @Column(columnDefinition = "TEXT")
+ @NotBlank @Column(columnDefinition = "TEXT")
private String text;
@CreatedDate
diff --git a/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java b/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java
index 49d05dd..829ff50 100644
--- a/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java
+++ b/src/main/java/org/example/visacasemanagementsystem/user/entity/User.java
@@ -22,20 +22,16 @@ public class User {
@Column(nullable = false, updatable = false)
private Long id;
- @NotBlank
- @Column(nullable = false)
+ @NotBlank @Column(nullable = false)
private String fullName;
- @NotBlank
- @Column(unique = true)
+ @NotBlank @Column(unique = true)
private String email;
//Placeholder password storage solution
- @NotBlank
- private String password;
+ @NotBlank private String password;
- @NotNull
- @Enumerated(EnumType.STRING)
+ @NotNull @Enumerated(EnumType.STRING)
private UserAuthorization userAuthorization;
@Override
diff --git a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java
index d476a04..31905b0 100644
--- a/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java
+++ b/src/main/java/org/example/visacasemanagementsystem/visa/entity/Visa.java
@@ -30,16 +30,13 @@ public class Visa {
@Column(name = "visa_id", nullable = false, updatable = false)
private Long id;
- @NotNull
- @Enumerated(EnumType.STRING)
+ @NotNull @Enumerated(EnumType.STRING)
private VisaType visaType;
- @NotNull
- @Enumerated(EnumType.STRING)
+ @NotNull @Enumerated(EnumType.STRING)
private VisaStatus visaStatus;
- @NotBlank
- private String nationality;
+ @NotBlank private String nationality;
@ManyToOne
@JoinColumn(name = "applicant_id", nullable = false)
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 3c32fb8..f981dd9 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -6,7 +6,7 @@ spring.datasource.username=${DB_USER:user}
spring.datasource.password=${DB_PASSWORD:secret}
# application.properties (default/test/prod)
-spring.jpa.hibernate.ddl-auto=validate
+spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.format_sql=false