-
Notifications
You must be signed in to change notification settings - Fork 0
/
sql_dev.sql
238 lines (183 loc) · 5.98 KB
/
sql_dev.sql
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
-- Create the db : createdb -h localhost -p 5432 -U postgres testdb
SELECT * FROM boulder;
SELECT * FROM gym;
SELECT * FROM gym_map_section;
SELECT * FROM gym_image;
SELECT * FROM boulder_point;
SELECT * FROM boulder_like;
SELECT * FROM boulder_completion;
SELECT * FROM boulder_comment;
FROM boulder;
-- Get the list of created tables and indexes
SELECT *
FROM pg_catalog.pg_tables
WHERE schemaname = 'public';
SELECT *
FROM pg_catalog.pg_indexes
WHERE schemaname = 'public';
CREATE TABLE IF NOT EXISTS map_section
(id serial PRIMARY KEY,
gym_id int REFERENCES gym(id),
map_section PATH);
-- Add values
INSERT INTO boulder
VALUES (12, 'purple', '2', 1, ((62, 46), (73, 46), (73, 52)), ('100%\xa0Volumes', 'Powerful'), '2021-12-21', Null, 0, 0, 700, 0, 'https://socialboulder.s3-eu-west-1.amazonaws.com/800/bouldersPics/cycKwGkY3oeqBPtpK.jpg');
-- Delete table
DROP TABLE boulders;
-- create table
CREATE TABLE IF NOT EXISTS boulder
(id serial PRIMARY KEY,
grade text,
sub_grade text,
gym_id smallint,
map_section path,
tag text[],
date_opened date,
date_closed date,
nb_like smallint,
nb_comment smallint,
point smallint,
nb_completion smallint,
img_url text);
SELECT *
FROM boulder;
INSERT INTO boulder(grade, sub_grade, gym_id, map_section, tag, date_opened, date_closed, nb_like, nb_comment, point, nb_completion, img_url)
VALUES ('purple', '2', 1, CAST('((62, 46), (73, 46), (73, 52))' AS PATH),
'{"100%\xa0Volumes", "Powerful"}', '2021-12-21', Null, 0, 0, 700, 0,
'https://socialboulder.s3-eu-west-1.amazonaws.com/800/bouldersPics/cycKwGkY3oeqBPtpK.jpg');
CREATE TABLE IF NOT EXISTS gym
(id serial PRIMARY KEY,
gym_name text,
city text,
address text
scrape_on boolean);
SELECT *
FROM gym;
INSERT INTO gym(gym_name, city, address, social_boulder_url, scrape_on)
VALUES ('arkose_nation','paris','35 Rue des Grands Champs, Paris, FR 75020','https://www.sboulder.com/arkose/nation',TRUE);
INSERT INTO boulder(grade, sub_grade, gym_id, map_section, tag, date_opened, date_closed, nb_like, nb_comment, point, nb_completion, img_url)
VALUES
('purple',
'2',
(SELECT id FROM gym WHERE gym_name = 'arkose_nation'),
CAST('((62, 46), (73, 46), (73, 52))' AS PATH),
'{"100%\xa0Volumes", "Powerful"}',
'2021-12-21', Null, 0, 0, 700, 0,
'https://socialboulder.s3-eu-west-1.amazonaws.com/800/bouldersPics/cycKwGkY3oeqBPtpK.jpg');
INSERT INTO boulder(grade, sub_grade, gym_id, map_section_id, tag, date_opened, date_closed, img_id)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s);"""
INSERT INTO gym_map_section(gym_id, map_section)
VALUES (1, '((47, 35), (37, 39))')
RAISE warning 'Duplicate user ID', USING ERRCODE = 'unique_constraint';
INSERT INTO gym_image(gym_id, img_url, os_path_to_img)
VALUES (1, 'https://socialboulder.s3-eu-west-1.amazonaws.com/800/bouldersPics/cycKwGkY3oeqBPtpK.jpg', NULL);
INSERT INTO boulder(grade, sub_grade, gym_id, map_section_id, tag, date_opened, date_closed, img_id)
VALUES ('purple', '2',
(SELECT id FROM gym WHERE gym.gym_name = 'arkose_nation'),
(SELECT id FROM gym_map_section WHERE gym_map_section.map_section = '((62, 46), (73, 46), (73, 52))'),
'{"100%\xa0Volumes", "Powerful"}', '2021-12-21', NULL,
(SELECT id FROM gym_image
WHERE
gym_image.gym_id = 1 AND gym_image.img_url = 'https://socialboulder.s3-eu-west-1.amazonaws.com/800/bouldersPics/cycKwGkY3oeqBPtpK.jpg'));
DELETE FROM boulder
WHERE grade = 'purple';
DELETE FROM gym_image
WHERE gym_id = 1;
DELETE FROM gym_map_section
WHERE gym_id = 1;
INSERT INTO boulder(grade, sub_grade, gym_id, map_section_id, tag, date_opened, date_closed, img_id)
VALUES (%s, %s,
(SELECT id FROM gym WHERE gym.gym_name = %s),
(SELECT id FROM gym_map_section WHERE gym_map_section.map_section = %s),
%s, %s, %s,
(SELECT id FROM gym_image
WHERE
gym_image.gym_id = %s AND gym_image.img_url = %s));
INSERT INTO boulder(grade, sub_grade, gym_id, map_section_id, img_id)
SELECT
'LOLpurple',
'4',
gym.id AS gym_id,
gym_map_section.id AS gym_map_section_id,
gym_image.id AS gym_image_id
FROM gym
INNER JOIN gym_map_section
ON gym.id = gym_map_section.gym_id
INNER JOIN gym_image
ON gym.id = gym_image.gym_id
WHERE
gym.gym_name = 'arkose'
AND gym_map_section.map_section = '((47, 35), (37, 39))'
AND gym_image.img_url = 'https://socialboulder.s3-eu-west-1.amazonaws.com/800/bouldersPics/RWR7rcRpctRNsAinj.jpg';
SELECT id
FROM boulder
WHERE
grade = 'purple'
AND sub_grade = '4'
AND gym_id = 1
AND map_section_id = (SELECT id FROM gym_map_section WHERE gym_map_section.map_section = '((47, 35), (37, 39))')
AND tag = '{Volumes, Complex, Technical}'
AND date_opened = '2021-12-14'
AND img_id = 24;
SELECT * FROM boulder_like;
DELETE FROM boulder_like
WHERE id = 1;
INSERT INTO boulder_like(boulder_id, registration_date, nb_like)
VALUES (8, '2022-02-14', 0);
SELECT
*
FROM
boulder
WHERE
gym_id = 1
AND id = 289
AND date_opened > '2022-01-01';
SELECT
DISTINCT date_opened,
gym_id
FROM
boulder
WHERE
gym_id !=1
or (gym_id = 1 and date_opened > '2022-01-01')
ORDER BY
date_opened;
SELECT
gym_id,
grade
FROM
boulder
ORDER BY
gym_id,
CASE
WHEN grade = 'yellow' THEN 1
WHEN grade = 'green' THEN 2
WHEN grade = 'blue' THEN 3
WHEN grade = 'red' THEN 4
WHEN grade = 'black' THEN 5
ELSE 6
END;
SELECT
boulder.gym_id,
gym.gym_name,
gym.id
FROM boulder
INNER JOIN gym ON boulder.gym_id = gym.id;
SELECT
*
FROM
boulder
INNER JOIN gym ON boulder.gym_id = gym.id
WHERE
boulder.gym_id !=1
or (boulder.gym_id = 1 and boulder.date_opened > '2022-01-01')
ORDER BY
gym_id,
CASE
WHEN grade = 'yellow' THEN 1
WHEN grade = 'green' THEN 2
WHEN grade = 'blue' THEN 3
WHEN grade = 'red' THEN 4
WHEN grade = 'black' THEN 5
ELSE 6
END;