diff --git a/backend/server/pom.xml b/backend/server/pom.xml
index 26f03c5..3f34737 100644
--- a/backend/server/pom.xml
+++ b/backend/server/pom.xml
@@ -54,10 +54,10 @@
-
-
-
-
+
+
+
+
@@ -92,6 +92,10 @@
org.postgresql
postgresql
+
+ org.flywaydb
+ flyway-database-postgresql
+
dev.rheinsw
diff --git a/backend/server/src/main/java/dev/rheinsw/server/contact/model/ContactRequest.java b/backend/server/src/main/java/dev/rheinsw/server/contact/model/ContactRequest.java
index c516ee6..e7dfd42 100644
--- a/backend/server/src/main/java/dev/rheinsw/server/contact/model/ContactRequest.java
+++ b/backend/server/src/main/java/dev/rheinsw/server/contact/model/ContactRequest.java
@@ -11,7 +11,8 @@ import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.time.LocalTime;
/**
* @author Thatsaphorn Atchariyaphap
@@ -51,7 +52,11 @@ public class ContactRequest {
@Column(name = "captcha_token", length = 1024)
private String captchaToken;
- private LocalDateTime submittedAt;
+ @Column(name = "submitted_date")
+ private LocalDate submittedDate;
+
+ @Column(name = "submitted_time")
+ private LocalTime submittedTime;
public ContactRequest setName(String name) {
this.name = name;
@@ -88,8 +93,13 @@ public class ContactRequest {
return this;
}
- public ContactRequest setSubmittedAt(LocalDateTime submittedAt) {
- this.submittedAt = submittedAt;
+ public ContactRequest setSubmittedDate(LocalDate submittedDate) {
+ this.submittedDate = submittedDate;
return this;
}
-}
+
+ public ContactRequest setSubmittedTime(LocalTime submittedTime) {
+ this.submittedTime = submittedTime;
+ return this;
+ }
+}
\ No newline at end of file
diff --git a/backend/server/src/main/java/dev/rheinsw/server/contact/usecase/SubmitContactUseCaseImpl.java b/backend/server/src/main/java/dev/rheinsw/server/contact/usecase/SubmitContactUseCaseImpl.java
index c95b760..2070caf 100644
--- a/backend/server/src/main/java/dev/rheinsw/server/contact/usecase/SubmitContactUseCaseImpl.java
+++ b/backend/server/src/main/java/dev/rheinsw/server/contact/usecase/SubmitContactUseCaseImpl.java
@@ -15,7 +15,8 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
-import java.time.LocalDateTime;
+import java.time.LocalDate;
+import java.time.LocalTime;
/**
* @author Thatsaphorn Atchariyaphap
@@ -65,7 +66,8 @@ public class SubmitContactUseCaseImpl implements SubmitContactUseCase {
.setPhone(request.phone())
.setWebsite(request.website())
.setCaptchaToken(request.captcha())
- .setSubmittedAt(LocalDateTime.now());
+ .setSubmittedDate(LocalDate.now())
+ .setSubmittedTime(LocalTime.now());
contactRepository.save(message);
diff --git a/backend/server/src/main/resources/application.yml b/backend/server/src/main/resources/application.yml
index 51279fc..5cb5bbd 100644
--- a/backend/server/src/main/resources/application.yml
+++ b/backend/server/src/main/resources/application.yml
@@ -9,13 +9,19 @@ spring:
username: ${DB_USERNAME}
password: ${DB_PASSWORD}
+ flyway:
+ enabled: true
+ baseline-on-migrate: true
+ locations: classpath:db/migration
+
jpa:
hibernate:
- ddl-auto: none
+ ddl-auto: none # ensure entities match the DB, but don't modify schema
show-sql: true
properties:
hibernate:
- format_sql: true
+ dialect: org.hibernate.dialect.PostgreSQLDialect
+ defer-datasource-initialization: true
mail:
host: smtp.resend.com
diff --git a/backend/server/src/main/resources/db/migration/V2__init_schema.sql b/backend/server/src/main/resources/db/migration/V2__init_schema.sql
new file mode 100644
index 0000000..633ec2d
--- /dev/null
+++ b/backend/server/src/main/resources/db/migration/V2__init_schema.sql
@@ -0,0 +1,31 @@
+create table api_key
+(
+ id bigint generated by default as identity
+ constraint pk_api_key
+ primary key,
+ key varchar(255) not null
+ constraint uc_api_key_key
+ unique,
+ type varchar(255) not null,
+ enabled boolean not null,
+ frontend_only boolean not null,
+ description text,
+ created_date date default CURRENT_DATE,
+ created_time time default CURRENT_TIME,
+ modified_date date,
+ modified_time time
+);
+
+CREATE TABLE contact_requests
+(
+ id BIGSERIAL PRIMARY KEY,
+ name VARCHAR(100),
+ email VARCHAR(100),
+ message VARCHAR(1000),
+ company VARCHAR(100),
+ phone VARCHAR(20),
+ website VARCHAR(100),
+ captcha_token VARCHAR(1024),
+ submitted_date DATE,
+ submitted_time TIME
+);
\ No newline at end of file