Fix Database Connection, rebase unpushed changes

This commit is contained in:
Tim
2025-05-07 15:45:14 +02:00
parent 7210e65400
commit b02894b452
14 changed files with 247 additions and 17 deletions

View File

@@ -0,0 +1,10 @@
package de.htwsaar.webshop.repository;
import de.htwsaar.webshop.repository.entities.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {
}

View File

@@ -0,0 +1,9 @@
package de.htwsaar.webshop.repository;
import de.htwsaar.webshop.repository.entities.ArticleConfiguration;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ArticleConfigurationRepository extends JpaRepository<ArticleConfiguration, Long> {
}

View File

@@ -0,0 +1,10 @@
package de.htwsaar.webshop.repository;
import de.htwsaar.webshop.repository.entities.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Long> {
}

View File

@@ -0,0 +1,10 @@
package de.htwsaar.webshop.repository;
import de.htwsaar.webshop.repository.entities.OrderItem;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface OrderItemRepository extends JpaRepository<OrderItem, Long> {
}

View File

@@ -0,0 +1,9 @@
package de.htwsaar.webshop.repository;
import de.htwsaar.webshop.repository.entities.Order;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface OrderRepository extends JpaRepository<Order, Long> {
}

View File

@@ -0,0 +1,32 @@
package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "Accounts")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "customerId", nullable = false)
private Customer customer;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@Column(name = "lang_i18n", nullable = false)
private String langI18n;
}

View File

@@ -3,19 +3,16 @@ package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.*;
import java.util.UUID;
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "Article")
@Entity
@Table(name = "Articles")
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -0,0 +1,29 @@
package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* An Article Configuration, for example T-Shirt Sizes (S,M,L,XL)
*/
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "ArticleConfigurations")
public class ArticleConfiguration {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "articleId", nullable = false)
private Long articleId;
@Column(name = "name", nullable = false)
private String name;
}

View File

@@ -0,0 +1,35 @@
package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "Customers")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "surname", nullable = false)
private String surname;
@Column(name = "address", nullable = false)
private String address;
@Column(name = "country", nullable = false)
private String country;
@Column(name = "zip", nullable = false)
private String zip;
}

View File

@@ -6,12 +6,12 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "Image")
@Entity
@Table(name = "Images")
public class Image {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)

View File

@@ -0,0 +1,18 @@
package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
@Entity
@Table(name = "Orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("customerId")
private Customer customer;
@Column(name = "time")
private Long time;
}

View File

@@ -0,0 +1,51 @@
package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.Min;
import lombok.*;
import org.hibernate.annotations.OnDelete;
import java.io.Serializable;
import java.util.Objects;
@Entity
@Table(name = "OrderItems")
public class OrderItem {
@EmbeddedId
private OrderItemId id;
@Column(nullable = false)
@Min(value = 1, message = "Amount must be at least 1")
private Integer amount;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("orderId")
@JoinColumn(name = "orderId", referencedColumnName = "id", nullable = false)
@OnDelete(action = org.hibernate.annotations.OnDeleteAction.CASCADE)
private Order order;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("articleId")
@JoinColumn(name = "articleId", referencedColumnName = "id", nullable = false)
@OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL)
private Article article;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("articleConfId")
@JoinColumn(name = "articleConfId", referencedColumnName = "id")
@OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL)
private ArticleConfiguration articleConfig;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
@Embeddable
class OrderItemId implements Serializable {
private Long orderId;
private Long articleId;
private Long articleConfId;
}
}

View File

@@ -2,18 +2,18 @@ package de.htwsaar.webshop.repository.entities;
import jakarta.persistence.*;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Positive;
import lombok.AllArgsConstructor;
import jakarta.validation.constraints.PositiveOrZero;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "Review")
@Getter
@Setter
@Entity
@Table(name = "Reviews")
public class Review {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -23,11 +23,11 @@ public class Review {
@Column(name = "content", nullable = false)
private String content;
@Positive
@Column(name = "articleId", nullable = false)
private Long articleId;
@ManyToOne(fetch = FetchType.LAZY)
@MapsId("articleId")
private Article article;
@Positive
@PositiveOrZero
@Max(10)
@Column(name = "rating", nullable = false)
private Integer rating;

View File

@@ -0,0 +1,20 @@
DROP TABLE IF EXISTS OrderItems;
CREATE TABLE IF NOT EXISTS OrderItems(
orderId INTEGER NOT NULL,
articleId INTEGER NOT NULL,
articleConfId INTEGER NULL,
amount INTEGER NOT NULL,
PRIMARY KEY (orderId, articleId, articleConfId), -- added
CONSTRAINT cAmount CHECK (amount > 0),
FOREIGN KEY (orderId) REFERENCES Orders(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (articleId) REFERENCES Articles(id)
ON DELETE SET NULL
ON UPDATE CASCADE,
FOREIGN KEY (articleConfId) REFERENCES ArticleConfigurations(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);