Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion book-my-show/backend/java/bms-monolith/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ build/
!**/src/test/**/build/

### VS Code ###
.vscode/
.vscode
42 changes: 42 additions & 0 deletions book-my-show/backend/java/bms-monolith/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,20 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>


<dependency>
<groupId>org.projectlombok</groupId>
Expand All @@ -70,6 +84,26 @@
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.18.0</version> <!-- Use the latest version compatible with your project -->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>


</dependencies>

Expand All @@ -87,6 +121,14 @@
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<configuration>
<propertyFile>src/main/resources/application.yaml</propertyFile>
<propertyFileWillOverride>true</propertyFileWillOverride>
</configuration>
</plugin>
</plugins>
</build>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.lbcc.bms.bms_monolith.common.constants;

public final class BMSErrorMessageConstants {
private BMSErrorMessageConstants() {
}

public static final String UNEXPECTED_ERROR_MESSAGE = "An unexpected error occurred";
public static final String UNEXPECTED_ERROR_CODE = "UNEXPECTED_ERROR";
public static final String EVENT_SERVICE_ERROR = "EVENT_SERVICE_ERROR";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.lbcc.bms.bms_monolith.common.constants;

public final class BMSSuccessMessageConstants {
private BMSSuccessMessageConstants() {
}

public static final String EVENT_SUCCESS_MESSAGE = "Events fetched successfully";
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ public abstract class BaseAuditingEntity {

@Id
@GeneratedValue(strategy = GenerationType.UUID)
@Column(columnDefinition = "CHAR(36)")
private UUID id;
@Column(columnDefinition = "CHAR(36)", updatable = false, nullable = false)
private String id;

@CreatedDate
@Column(updatable = false)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
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;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.FetchType;
import jakarta.persistence.Column;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -18,12 +18,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;

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -13,21 +14,26 @@
import jakarta.persistence.FetchType;
import jakarta.validation.constraints.NotNull;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.lbcc.bms.bms_monolith.common.enums.Genre;

import java.time.Instant;
import java.util.List;

@Entity
@Table(name = "event_shows")
@Getter
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
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<Genre> genres;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;

@Entity
@Table(name = "event_types")
@Getter
@Setter
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.lbcc.bms.bms_monolith.common.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.HashSet;
import java.util.Set;

@AllArgsConstructor
@SuperBuilder
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@Table(name = "registered_users")
public class RegisteredUser extends BaseAuditingEntity {

@Column(length = 20)
private String username;

@Column(length = 25)
private String email;

@Column(columnDefinition = "CHAR(10)")
private String phone;

@Column(length = 20)
@JsonIgnore
private String password;

@Builder.Default
@Column(columnDefinition = "TINYINT(1)")
private Boolean isActive = true;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "user_roles",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")})
@Builder.Default
private Set<Role> roles = new HashSet<>();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package org.lbcc.bms.bms_monolith.common.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.lbcc.bms.bms_monolith.common.enums.RoleType;

@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "roles")
public class Role extends BaseAuditingEntity {

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private RoleType label;

@Column(nullable = false, length = 50)
private String description;
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
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;
import lombok.Setter;
import org.lbcc.bms.bms_monolith.common.enums.OperationalStatus;

@Entity
@Table(name = "seats")
@Getter
@Setter
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -10,6 +11,7 @@
import java.math.BigDecimal;

@Entity
@Table(name = "seat_types")
@Getter
@Setter
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,31 @@
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;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.math.BigDecimal;

@Entity
@Table(name = "seat_type_in_shows")
@Getter
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
Loading