diff --git a/00-backend/datasource/database.sqlite b/00-backend/datasource/database.sqlite index b43f27e..017712b 100644 Binary files a/00-backend/datasource/database.sqlite and b/00-backend/datasource/database.sqlite differ diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Account.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Account.java index 61a57e3..086d62b 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Account.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Account.java @@ -18,7 +18,7 @@ public class Account { private Long id; @ManyToOne(fetch = FetchType.LAZY, optional = false) - @JoinColumn(name = "customerId", nullable = false) + @JoinColumn(name = "customer_id", nullable = false) private Customer customer; @Column(nullable = false, unique = true) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Image.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Image.java index 9e00e6e..090674a 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Image.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Image.java @@ -1,25 +1,23 @@ package de.htwsaar.webshop.repository.entities; import jakarta.persistence.*; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import lombok.*; @Getter @Setter @NoArgsConstructor @AllArgsConstructor +@ToString @Entity @Table(name = "Images") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", nullable = false) + @Column(name = "id", nullable = false, insertable = false, updatable = false, unique = true) private Long id; - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "articleId", referencedColumnName = "id", nullable = false) + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "article_id", referencedColumnName = "id", nullable = false) private Article article; @Column(name = "uri", nullable = false) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java index 290bc2a..adfbd9e 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Order.java @@ -20,7 +20,7 @@ public class Order { private Long id; @ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.ALL, targetEntity = Customer.class) - @JoinColumn(name = "customerId") + @JoinColumn(name = "customer_id") private Customer customer; @Column(name = "time", nullable = false) diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java index e35ea92..a1f2df8 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/OrderItem.java @@ -26,13 +26,13 @@ public class OrderItem { @ManyToOne(fetch = FetchType.LAZY) @MapsId("orderId") - @JoinColumn(name = "orderId", referencedColumnName = "id", nullable = false) + @JoinColumn(name = "order_id", 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) + @JoinColumn(name = "article_id", referencedColumnName = "id", nullable = false) @OnDelete(action = org.hibernate.annotations.OnDeleteAction.SET_NULL) private Article article; } diff --git a/00-backend/src/main/resources/db/DBv1.sql b/00-backend/src/main/resources/db/DBv1.sql deleted file mode 100644 index 2adfb4b..0000000 --- a/00-backend/src/main/resources/db/DBv1.sql +++ /dev/null @@ -1,56 +0,0 @@ -CREATE TABLE IF NOT EXISTS ArticleConfigurations( - id INTEGER PRIMARY KEY NOT NULL, - articleId INTEGER NOT NULL, - name TEXT NOT NULL, - FOREIGN KEY (articleId) REFERENCES Articles(id) - ON DELETE CASCADE - ON UPDATE CASCADE -); - -CREATE TABLE IF NOT EXISTS Customers( - id INTEGER PRIMARY KEY NOT NULL, - name TEXT NOT NULL, --nachname - surname TEXT NOT NULL, --vorname, - address TEXT NOT NULL, - country TEXT NOT NULL, - zip TEXT NOT NULL -); - -CREATE TABLE IF NOT EXISTS Orders( - id INTEGER PRIMARY KEY NOT NULL, - customerId INTEGER NOT NULL, - time INTEGER NOT NULL, --unix millis or epoch, TBD - FOREIGN KEY (customerId) REFERENCES Customers(id) - ON DELETE CASCADE - ON UPDATE CASCADE -); - --- Each Article-Configuration in the order gets their own of this one -CREATE TABLE IF NOT EXISTS OrderItems( - orderId INTEGER NOT NULL, - articleId INTEGER NOT NULL, - articleConfId INTEGER NULL, - amount INTEGER NOT NULL, - - 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 -); - -CREATE TABLE IF NOT EXISTS Accounts( - id INTEGER PRIMARY KEY NOT NULL, - customerId INTEGER NOT NULL, - email TEXT NOT NULL, - password TEXT NOT NULL, - lang_i18n TEXT NOT NULL, - FOREIGN KEY (customerId) REFERENCES Customers(id) - ON DELETE CASCADE - ON UPDATE CASCADE -); \ No newline at end of file diff --git a/00-backend/src/main/resources/db/DBv2.sql b/00-backend/src/main/resources/db/DBv2.sql deleted file mode 100644 index 7795aad..0000000 --- a/00-backend/src/main/resources/db/DBv2.sql +++ /dev/null @@ -1,20 +0,0 @@ -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 -); \ No newline at end of file diff --git a/00-backend/src/main/resources/db/DBv3.sql b/00-backend/src/main/resources/db/DBv3.sql deleted file mode 100644 index 157e72b..0000000 --- a/00-backend/src/main/resources/db/DBv3.sql +++ /dev/null @@ -1,20 +0,0 @@ -DROP TABLE IF EXISTS ArticleConfigurations; - -DROP TABLE OrderItems; - -CREATE TABLE IF NOT EXISTS OrderItems -( - id INTEGER NOT NULL PRIMARY KEY, --composite pk was wrong - orderId INTEGER NOT NULL, - articleId INTEGER NOT NULL, - amount INTEGER NOT NULL, - -- art conf not needed - - 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 -); \ No newline at end of file diff --git a/00-backend/src/main/resources/db/initdb.sql b/00-backend/src/main/resources/db/initdb.sql index 43ed362..45972bb 100644 --- a/00-backend/src/main/resources/db/initdb.sql +++ b/00-backend/src/main/resources/db/initdb.sql @@ -1,30 +1,84 @@ -- articles -CREATE TABLE IF NOT EXISTS Articles( - id INTEGER PRIMARY KEY NOT NULL, - uuid TEXT UNIQUE NOT NULL, -- UUID - stock INTEGER NOT NULL DEFAULT 0, - name TEXT NOT NULL, - description TEXT NULL, --in html - price100 INTEGER NOT NULL, -- in cents - discount100 INTEGER NULL, -- in percent - category TEXT NULL, +CREATE TABLE IF NOT EXISTS Articles +( + id INTEGER PRIMARY KEY NOT NULL, + uuid TEXT UNIQUE NOT NULL, -- UUID + stock INTEGER NOT NULL DEFAULT 0, + name TEXT NOT NULL, + description TEXT NULL, --in html + price100 INTEGER NOT NULL, -- in cents + discount100 INTEGER NULL, -- in percent + category TEXT NULL, CONSTRAINT c_stock CHECK ( stock >= 0 ) ); -- article images -CREATE TABLE IF NOT EXISTS Images( - id INTEGER PRIMARY KEY NOT NULL, - articleId INTEGER NOT NULL, - uri TEXT NOT NULL, - FOREIGN KEY (articleId) REFERENCES Articles(id) +CREATE TABLE IF NOT EXISTS Images +( + id INTEGER PRIMARY KEY NOT NULL, + article_id INTEGER NOT NULL, + uri TEXT NOT NULL, + FOREIGN KEY (article_id) REFERENCES Articles (id) ); -CREATE TABLE IF NOT EXISTS Reviews( - id INTEGER PRIMARY KEY NOT NULL, - articleId INTEGER NOT NULL, - rating INTEGER NOT NULL, - content TEXT NULL, - FOREIGN KEY (articleId) REFERENCES Articles(id), +CREATE TABLE IF NOT EXISTS Reviews +( + id INTEGER PRIMARY KEY NOT NULL, + article_id INTEGER NOT NULL, + rating INTEGER NOT NULL, + content TEXT NULL, + FOREIGN KEY (article_id) REFERENCES Articles (id), CONSTRAINT c_rating CHECK ( rating >= 0 AND rating <= 10) +); + + + +CREATE TABLE IF NOT EXISTS Customers +( + id INTEGER PRIMARY KEY NOT NULL, + name TEXT NOT NULL, --nachname + surname TEXT NOT NULL, --vorname, + address TEXT NOT NULL, + country TEXT NOT NULL, + zip TEXT NOT NULL +); + +CREATE TABLE IF NOT EXISTS Orders +( + id INTEGER PRIMARY KEY NOT NULL, + customer_id INTEGER NOT NULL, + time INTEGER NOT NULL, --unix millis or epoch, TBD + FOREIGN KEY (customer_id) REFERENCES Customers (id) + ON DELETE CASCADE + ON UPDATE CASCADE +); + +CREATE TABLE IF NOT EXISTS Accounts +( + id INTEGER PRIMARY KEY NOT NULL, + customer_id INTEGER NOT NULL, + email TEXT NOT NULL, + password TEXT NOT NULL, + lang_i18n TEXT NOT NULL, + FOREIGN KEY (customer_id) REFERENCES Customers (id) + ON DELETE CASCADE + ON UPDATE CASCADE +); + +CREATE TABLE IF NOT EXISTS OrderItems +( + id INTEGER NOT NULL PRIMARY KEY, + order_id INTEGER NOT NULL, + article_id INTEGER NOT NULL, + amount INTEGER NOT NULL, + -- art conf not needed + + CONSTRAINT cAmount CHECK (amount > 0), + FOREIGN KEY (order_id) REFERENCES Orders (id) + ON DELETE CASCADE + ON UPDATE CASCADE, + FOREIGN KEY (article_id) REFERENCES Articles (id) + ON DELETE SET NULL + ON UPDATE CASCADE ); \ No newline at end of file