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