Merge SQL Scripts (flyway is for cowards)
This commit is contained in:
Binary file not shown.
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
);
|
||||
@@ -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
|
||||
);
|
||||
@@ -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
|
||||
);
|
||||
@@ -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
|
||||
);
|
||||
Reference in New Issue
Block a user