diff --git a/book-my-show/backend/java/bms-monolith/pom.xml b/book-my-show/backend/java/bms-monolith/pom.xml index 76f9214..a695f1f 100644 --- a/book-my-show/backend/java/bms-monolith/pom.xml +++ b/book-my-show/backend/java/bms-monolith/pom.xml @@ -54,6 +54,10 @@ org.springframework.boot spring-boot-starter-validation + + org.liquibase + liquibase-core + org.projectlombok @@ -87,6 +91,14 @@ + + org.liquibase + liquibase-maven-plugin + + src/main/resources/application.yaml + true + + diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Event.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Event.java index 12dbaf9..0c770c9 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Event.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Event.java @@ -1,6 +1,7 @@ package org.lbcc.bms.bms_monolith.common.entity; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.CascadeType; @@ -18,12 +19,12 @@ import java.util.List; @Entity +@Table(name = "events") @Getter @Setter @AllArgsConstructor @NoArgsConstructor @SuperBuilder public class Event extends BaseAuditingEntity { - @Size(min=10, max=50, message = "Title must be between 10 and 50 characters.") @Column(nullable = false, length = 50) private String title; diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventShow.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventShow.java index a8196e1..b7652a1 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventShow.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventShow.java @@ -1,6 +1,7 @@ package org.lbcc.bms.bms_monolith.common.entity; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import jakarta.persistence.ElementCollection; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; @@ -21,13 +22,14 @@ import java.util.List; @Entity +@Table(name = "event_shows") @Getter @SuperBuilder public class EventShow extends BaseAuditingEntity { @ElementCollection(targetClass = Genre.class) - @CollectionTable(name = "show_genre", joinColumns = @JoinColumn(name = "show_id")) - @Column(name = "genre") + @CollectionTable(name = "show_genres", joinColumns = @JoinColumn(name = "show_id")) + @Column(name = "label") @Enumerated(EnumType.STRING) private List genres; diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventType.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventType.java index e3b4af8..be81f6c 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventType.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/EventType.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -9,6 +10,7 @@ import lombok.experimental.SuperBuilder; @Entity +@Table(name = "event_types") @Getter @Setter @AllArgsConstructor diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Seat.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Seat.java index 0673e1d..536fb65 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Seat.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Seat.java @@ -1,6 +1,12 @@ package org.lbcc.bms.bms_monolith.common.entity; -import jakarta.persistence.*; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Enumerated; +import jakarta.persistence.EnumType; +import jakarta.persistence.Column; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -8,6 +14,7 @@ import org.lbcc.bms.bms_monolith.common.enums.OperationalStatus; @Entity +@Table(name = "seats") @Getter @Setter @AllArgsConstructor diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatType.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatType.java index 4a11cc2..50d26ff 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatType.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatType.java @@ -2,6 +2,7 @@ import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -10,6 +11,7 @@ import java.math.BigDecimal; @Entity +@Table(name = "seat_types") @Getter @Setter @AllArgsConstructor diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatTypeInShow.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatTypeInShow.java index 45f7fb1..581241e 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatTypeInShow.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/SeatTypeInShow.java @@ -1,6 +1,7 @@ package org.lbcc.bms.bms_monolith.common.entity; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import jakarta.persistence.ManyToOne; import jakarta.persistence.JoinColumn; import jakarta.persistence.Column; @@ -10,16 +11,17 @@ import java.math.BigDecimal; @Entity +@Table(name = "seat_type_in_shows") @Getter @SuperBuilder public class SeatTypeInShow extends BaseAuditingEntity { @ManyToOne - @JoinColumn(name = "seat_type_id") + @JoinColumn(name = "seat_type_id", nullable = false) private SeatType seatType; @ManyToOne - @JoinColumn(name = "show_id") + @JoinColumn(name = "show_id", nullable = false) private EventShow show; @Column(precision = 10, scale = 2) diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Vendor.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Vendor.java index 5feef8b..94e32ff 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Vendor.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Vendor.java @@ -1,37 +1,51 @@ package org.lbcc.bms.bms_monolith.common.entity; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import jakarta.persistence.Enumerated; import jakarta.persistence.EnumType; import jakarta.persistence.Column; import jakarta.validation.constraints.Size; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.lbcc.bms.bms_monolith.common.enums.VendorStatus; +import java.time.LocalDateTime; + @Entity +@Table(name = "vendors") @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class Vendor extends BaseAuditingEntity { + @Column(nullable = false, length = 20) private String name; private String contactNumber; + + @Column(nullable = false, length = 100) private String email; + + @Column(nullable = false) private String address; + + @Column(nullable = true, length = 100) private String website; @Enumerated(EnumType.STRING) + @Column(nullable = false, length = 20) private VendorStatus status; - @Column(nullable = true, length = 100) - @Size(min = 10, max = 100, message = "Registration date must be between 10 and 100 characters.") - private String registrationDate; + @Column(nullable = false) + private LocalDateTime registrationDate; @Column(nullable = false, length = 255) - @Size(min = 25, max = 255, message = "Logo URL must be between 25 and 255 characters.") private String logoUrl; } diff --git a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Venue.java b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Venue.java index 3e698c7..97d9bea 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Venue.java +++ b/book-my-show/backend/java/bms-monolith/src/main/java/org/lbcc/bms/bms_monolith/common/entity/Venue.java @@ -1,11 +1,13 @@ package org.lbcc.bms.bms_monolith.common.entity; import jakarta.persistence.Entity; +import jakarta.persistence.Table; import jakarta.persistence.Enumerated; import jakarta.persistence.EnumType; import jakarta.persistence.CascadeType; import jakarta.persistence.FetchType; import jakarta.persistence.OneToMany; +import jakarta.persistence.Column; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; @@ -19,12 +21,14 @@ import java.util.List; @Entity +@Table(name = "venues") @Getter @Setter @AllArgsConstructor @NoArgsConstructor public class Venue extends BaseAuditingEntity { + @Column(nullable = false, unique = true) private String name; private String address; private BigDecimal latitude; @@ -38,7 +42,6 @@ public class Venue extends BaseAuditingEntity { private OperationalStatus operationalStatus; @OneToMany(mappedBy = "venue", cascade = CascadeType.ALL, fetch = FetchType.LAZY) - @NotNull(message = "Seats list cannot be null.") - @Size(min = 1, max = 100, message = "Seats list must contain between 1 and 100 seats.") + @Column(nullable = false) private List seats; } diff --git a/book-my-show/backend/java/bms-monolith/src/main/resources/application.yaml b/book-my-show/backend/java/bms-monolith/src/main/resources/application.yaml index a30b3ae..c63a05b 100644 --- a/book-my-show/backend/java/bms-monolith/src/main/resources/application.yaml +++ b/book-my-show/backend/java/bms-monolith/src/main/resources/application.yaml @@ -11,8 +11,11 @@ Spring: hibernate: dialect: org.hibernate.dialect.MySQLDialect hibernate: - ddl-auto: update + ddl-auto: validate show-sql: true + liquibase: + change-log: classpath:db/changelog/changelog-master.xml + enabled: true server: servlet: context-path: /api/v1 \ No newline at end of file diff --git a/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/changelog-master.xml b/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/changelog-master.xml new file mode 100644 index 0000000..0bbd586 --- /dev/null +++ b/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/changelog-master.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/v1.0/add-constraints.xml b/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/v1.0/add-constraints.xml new file mode 100644 index 0000000..4db64bc --- /dev/null +++ b/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/v1.0/add-constraints.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/v1.0/create-tables.xml b/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/v1.0/create-tables.xml new file mode 100644 index 0000000..e580d92 --- /dev/null +++ b/book-my-show/backend/java/bms-monolith/src/main/resources/db/changelog/v1.0/create-tables.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +