-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathQuory.txt
More file actions
146 lines (142 loc) · 4.35 KB
/
Quory.txt
File metadata and controls
146 lines (142 loc) · 4.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE,
phone VARCHAR(15),
dob DATE,
aadhaar VARCHAR(12),
gender VARCHAR(10),
password VARCHAR(255)
);
CREATE TABLE sellers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
phone VARCHAR(15) NOT NULL,
dob DATE NOT NULL,
aadhaar VARCHAR(12) NOT NULL UNIQUE,
gender ENUM('Male', 'Female', 'Other') NOT NULL,
password VARCHAR(255) NOT NULL
);
ALTER TABLE users
ADD COLUMN otp INT(6) DEFAULT NULL,
ADD COLUMN otp_expiry DATETIME DEFAULT NULL;
CREATE TABLE books_sold (
id INT AUTO_INCREMENT PRIMARY KEY,
book_name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
quantity_sold INT NOT NULL,
total_earnings DECIMAL(12, 2) GENERATED ALWAYS AS (price * quantity_sold) STORED,
sold_date DATE NOT NULL
);
CREATE TABLE cart (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT NOT NULL,
user_id INT NOT NULL,
quantity INT NOT NULL,
added_date DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (product_id) REFERENCES products(id),
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE checked_out (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
book_name VARCHAR(255) NOT NULL,
quantity INT NOT NULL,
total_amount DECIMAL(10, 2) NOT NULL,
checkout_date DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
CREATE TABLE genres (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10,2) NOT NULL,
image VARCHAR(255),
stock_status VARCHAR(50) DEFAULT 'In Stock',
quantity INT NOT NULL,
seller_id INT,
FOREIGN KEY (seller_id) REFERENCES sellers(id)
);
DELIMITER //
CREATE TRIGGER update_stock_status_before_insert
BEFORE INSERT ON products
FOR EACH ROW
BEGIN
IF NEW.quantity < 1 THEN
SET NEW.stock_status = 'Out of Stock';
END IF;
END;
//
CREATE TRIGGER update_stock_status_before_update
BEFORE UPDATE ON products
FOR EACH ROW
BEGIN
IF NEW.quantity < 1 THEN
SET NEW.stock_status = 'Out of Stock';
ELSE
SET NEW.stock_status = 'In Stock';
END IF;
END;
//
DELIMITER ;
CREATE TABLE product_genres (
product_id INT NOT NULL,
genre_id INT NOT NULL,
PRIMARY KEY (product_id, genre_id),
FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE,
FOREIGN KEY (genre_id) REFERENCES genres(id) ON DELETE CASCADE
);
CREATE TABLE seller_products (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT NOT NULL,
seller_id INT NOT NULL,
FOREIGN KEY (product_id) REFERENCES products(id),
FOREIGN KEY (seller_id) REFERENCES sellers(id)
);
CREATE TABLE shipments (
id INT AUTO_INCREMENT PRIMARY KEY,
product_id INT NOT NULL,
seller_id INT NOT NULL,
quantity INT NOT NULL,
shipped BOOLEAN DEFAULT FALSE,
shipment_date DATE,
FOREIGN KEY (product_id) REFERENCES products(id),
FOREIGN KEY (seller_id) REFERENCES sellers(id)
);
CREATE TABLE user_address (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
fname VARCHAR(255) NOT NULL,
lname VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
flat_num VARCHAR(255) NOT NULL,
street_name VARCHAR(255) NOT NULL,
area VARCHAR(255) NOT NULL,
landmark VARCHAR(255),
country VARCHAR(255) NOT NULL,
state VARCHAR(255) NOT NULL,
zip VARCHAR(20) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
CREATE TABLE wishlist (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
product_id INT NOT NULL,
added_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
);
INSERT INTO `genres` (`id`, `name`) VALUES
(3, 'College Books'),
(4, 'Exam Preparation'),
(5, 'Reading Books'),
(6, 'School Books'),
(7, 'Fantasy'),
(8, 'History'),
(9, 'Fiction');