Skip to content

Commit

Permalink
Implemented Addresses
Browse files Browse the repository at this point in the history
  • Loading branch information
kabi239 committed Jan 7, 2025
1 parent 320ca56 commit fd2bbc8
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 9 deletions.
52 changes: 47 additions & 5 deletions src/main/java/com/ecommerce/sb_ecom/model/Address.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,55 @@
package com.ecommerce.sb_ecom.model;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name ="addtesses")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long AddressId;
private Long addressId;

@NotBlank
@Size(min = 5,message = "Street name must be atleast 5 characters")
private String street;
@NotBlank
@Size(min = 5,message = "buildingName name must be atleast 5 characters")
private String buildingName;
@NotBlank
@Size(min = 5,message = "city name must be atleast 5 characters")
private String city;
@NotBlank
@Size(min = 5,message = "state name must be atleast 5 characters")
private String state;
@NotBlank
@Size(min = 2,message = "Country name must be atleast 5 characters")
private String country;
@NotBlank
@Size(min = 6,message = "PostalCode name must be atleast 5 characters")
private String postalCode;

@ToString.Exclude
@ManyToMany(mappedBy = "addresses")
private List<User> users = new ArrayList<>();

public Address(String street, String buildingName, String city, String state, String country, String postalCode) {
this.street = street;
this.buildingName = buildingName;
this.city = city;
this.state = state;
this.country = country;
this.postalCode = postalCode;
}
}
3 changes: 3 additions & 0 deletions src/main/java/com/ecommerce/sb_ecom/model/Product.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "products")
@ToString
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/ecommerce/sb_ecom/model/Role.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.ecommerce.sb_ecom.model;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "roles")
public class Role {

Expand All @@ -15,6 +18,7 @@ public class Role {
@Column(name = "role_id")
private Integer roleId;

@ToString.Exclude
@Enumerated(EnumType.STRING)
@Column(length = 20, name = "role_name")
private AppRole roleName;
Expand Down
16 changes: 12 additions & 4 deletions src/main/java/com/ecommerce/sb_ecom/model/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,11 @@
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.*;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Entity
Expand Down Expand Up @@ -57,8 +56,17 @@ public User(String username, String email, String password) {
//Represents the collection of roles assigned to a user.
//The Set ensures no duplicate roles are assigned to the same user.

@ToString.Exclude
@OneToMany(mappedBy = "user" , cascade = {CascadeType.PERSIST,CascadeType.MERGE},
orphanRemoval = true) // if a user is deleted all the product will become orphan
// or not mapped with anything, by using orphanRemoval ,the product associated will also be removed
private Set<Product> products = new HashSet<>();

// User is the owner of this relationship
@Getter
@Setter
@ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})
@JoinTable(name= "user_address", joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "address_id"))
private List<Address> addresses = new ArrayList<>();
}

0 comments on commit fd2bbc8

Please sign in to comment.