-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathqueries.txt
174 lines (136 loc) · 5.32 KB
/
queries.txt
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
-- Database: libraryManagementSystem
-- --------------------------------------------------------
-- Table structure for table author
CREATE TABLE author (
authorid SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
status VARCHAR(10) NOT NULL
);
-- Dumping data for table author
INSERT INTO author (name, status) VALUES
('Alan Forbes', 'Enable'),
('Lynn Beighley', 'Enable');
-- --------------------------------------------------------
-- Table structure for table book
CREATE TABLE book (
bookid SERIAL PRIMARY KEY,
categoryid INT NOT NULL,
authorid INT NOT NULL,
rackid INT NOT NULL,
name TEXT NOT NULL,
picture VARCHAR(250) NOT NULL,
publisherid INT NOT NULL,
isbn VARCHAR(30) NOT NULL,
no_of_copy INT NOT NULL,
status VARCHAR(10) NOT NULL,
added_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Dumping data for table book
INSERT INTO book (categoryid, authorid, rackid, name, picture, publisherid, isbn, no_of_copy, status, added_on, updated_on) VALUES
(2, 2, 2, 'The Joy of PHP Programming', 'joy-php.jpg', 8, 'B00BALXN70', 10, 'Enable', '2022-06-12 11:12:48', '2022-06-12 11:13:27'),
(2, 3, 2, 'Head First PHP & MySQL', 'header-first-php.jpg', 9, '0596006306', 10, 'Enable', '2022-06-12 11:16:01', '2022-06-12 11:16:01'),
(2, 2, 1, 'dsgsdgsd', '', 7, 'sdfsd2334', 23, 'Enable', '2022-06-12 13:29:14', '2022-06-12 13:29:14'),
(1, 2, 0, 'eeeeeebook', '', 2, 'hfdfhdfhd', 2, '', '2023-03-19 16:27:17', '2023-03-19 16:27:17'),
(1, 2, 0, 'aaaaaaaaaaaaaa', '', 2, 'bbbbbbbbbbbbbbbbbb', 2, '', '2023-03-19 17:37:56', '2023-03-19 17:37:56'),
(1, 2, 1, 'bbbbbbbbbbbbbb', '', 2, '4346436463463', 2, 'Enable', '2023-03-25 14:44:18', '2023-03-25 14:44:18');
-- --------------------------------------------------------
-- Table structure for table category
CREATE TABLE category (
categoryid SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
status VARCHAR(10) NOT NULL
);
-- Dumping data for table category
INSERT INTO category (name, status) VALUES
('Web Design', 'Enable'),
('Programming', 'Enable'),
('Commerce', 'Enable'),
('Math', 'Enable'),
('Web Development', 'Enable');
-- --------------------------------------------------------
-- Table structure for table issued_book
CREATE TABLE issued_book (
issuebookid SERIAL PRIMARY KEY,
bookid INT NOT NULL,
userid INT NOT NULL,
issue_date_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
expected_return_date TIMESTAMP NOT NULL,
return_date_time TIMESTAMP NOT NULL,
status VARCHAR(20) NOT NULL
);
-- Dumping data for table issued_book
INSERT INTO issued_book (bookid, userid, issue_date_time, expected_return_date, return_date_time, status) VALUES
(2, 2, '2022-06-12 15:33:45', '2022-06-15 16:27:59', '2022-06-16 16:27:59', 'Not Return'),
(1, 2, '2022-06-12 18:46:07', '2022-06-30 18:46:02', '2022-06-12 18:46:14', 'Returned'),
(7, 2, '2023-03-25 14:32:57', '2023-03-25 14:32:47', '2023-03-26 14:32:51', 'Issued');
-- --------------------------------------------------------
-- Table structure for table publisher
CREATE TABLE publisher (
publisherid SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
status VARCHAR(10) NOT NULL
);
-- Dumping data for table publisher
INSERT INTO publisher (name, status) VALUES
('Amazon publishing', 'Enable'),
('Penguin books ltd.', 'Enable'),
('Vintage Publishing', 'Enable'),
('Macmillan Publishers', 'Enable'),
('Simon & Schuster', 'Enable'),
('HarperCollins', 'Enable'),
('Plum Island', 'Enable'),
('O’Reilly', 'Enable');
-- --------------------------------------------------------
-- Table structure for table rack
CREATE TABLE rack (
rackid SERIAL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
status VARCHAR(10) NOT NULL DEFAULT 'Enable'
);
-- Dumping data for table rack
INSERT INTO rack (name, status) VALUES
('R1', 'Enable'),
('R2', 'Enable');
-- --------------------------------------------------------
-- Table structure for table user
CREATE TABLE "user" (
id SERIAL PRIMARY KEY,
first_name VARCHAR(255),
last_name VARCHAR(255),
email VARCHAR(255),
password VARCHAR(64) NOT NULL,
role VARCHAR(10) DEFAULT 'admin'
);
-- Dumping data for table user
INSERT INTO "user" (first_name, last_name, email, password, role) VALUES
('Mark', 'Wood', '[email protected]', '123', 'user'),
('George', 'Smith', '[email protected]', '123', 'admin'),
('Adam', NULL, '[email protected]', '123', 'admin'),
('aaa', 'bbbbb', '[email protected]', '123', 'user');
-- Create a trigger to update the 'no_of_copy' column in the 'book' table
CREATE OR REPLACE FUNCTION update_no_of_copy()
RETURNS TRIGGER AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
UPDATE book
SET no_of_copy = no_of_copy - 1
WHERE bookid = NEW.bookid;
ELSIF TG_OP = 'DELETE' THEN
UPDATE book
SET no_of_copy = no_of_copy + 1
WHERE bookid = OLD.bookid;
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER update_no_of_copy_trigger
AFTER INSERT OR DELETE ON issued_book
FOR EACH ROW
EXECUTE FUNCTION update_no_of_copy();
-- Create a view to display details of issued books along with user information
CREATE OR REPLACE VIEW issued_books_view AS
SELECT ib.issuebookid, b.name AS book_name, u.first_name || ' ' || u.last_name AS user_name, ib.issue_date_time, ib.expected_return_date, ib.return_date_time, ib.status
FROM issued_book ib
JOIN book b ON ib.bookid = b.bookid
JOIN "user" u ON ib.userid = u.id;