DatabaseCreation: insertions.sql

File insertions.sql, 119.2 KB (added by 231072, 3 days ago)
Line 
1-- CATEGORY
2
3
4truncate table category cascade
5
6
7ALTER SEQUENCE category_category_id_seq RESTART WITH 1;
8
9
10
11INSERT INTO Category (name, description, parent_category) VALUES
12-- Главни категории
13('Fashion', 'Main fashion category', NULL),
14('Electronics', 'Electronics and gadgets', NULL),
15('Home & Garden', 'Home and garden products', NULL),
16('Sports & Outdoors', 'Sports and outdoor equipment', NULL),
17('Books And More', 'Main category for books and printed media', NULL),
18('Automotive', 'Vehicles and car-related products', NULL),
19('Real Estate', 'Properties and real estate listings', NULL)
20
21
22
23
24
25INSERT INTO Category (name, description, parent_category) VALUES
26('Clothing', 'Clothing items', 1),
27('Shoes', 'Footwear', 1),
28('Accessories', 'Fashion accessories', 1),
29('T-Shirts', 'T-shirts products', 8),
30('Shirts', 'Formal & casual shirts', 8),
31('Jeans', 'Denim pants', 8),
32('Jackets', 'Coats & jackets', 8),
33('Dresses', 'Women dresses', 8),
34('Sneakers', 'Casual shoes', 9),
35('Boots', 'Winter/Leather boots', 9),
36('Heels', 'Women heels', 9),
37('Bags', 'Handbags / backpacks', 10),
38('Belts', 'Fashion belts', 10),
39('Hats', 'Caps / hats', 10),
40('Watches', 'Watches and timepieces', 10),
41('Sunglasses', 'Sunglasses and eyewear', 10)
42
43
44
45
46
47INSERT INTO Category (name, description, parent_category) values
48-- Electronics
49('Phones', 'Mobile phones', 2),
50('Smartphones', 'Smartphones', 24),
51('Feature Phones', 'Feature phones', 24),
52('Computers', 'Computers and peripherals', 2),
53('Laptops', 'Laptop computers', 27),
54('Desktops', 'Desktop computers', 27),
55('Tablets', 'Tablet devices', 27),
56('TV & Audio', 'Televisions and audio', 2),
57('Televisions', 'TV sets', 31),
58('Speakers', 'Audio speakers', 31),
59('Headphones', 'Headphones and earphones', 31),
60('Gaming', 'Gaming products', 2),
61('Consoles', 'Gaming consoles', 35),
62('Games', 'Video games', 35),
63('Gaming Accessories', 'Gaming accessories', 35),
64('Home Appliances', 'Home appliances', 2),
65('Kitchen Appliances', 'Kitchen appliances', 39),
66('Refrigerators', 'Refrigerators', 40),
67('Ovens', 'Ovens', 40),
68('Microwaves', 'Microwaves', 40),
69('Coffee Machines', 'Coffee machines', 40),
70('Cleaning', 'Cleaning appliances', 39),
71('Vacuum Cleaners', 'Vacuum cleaners', 44),
72('Steam Cleaners', 'Steam cleaners', 44),
73('Laundry', 'Laundry appliances', 39),
74('Washing Machines', 'Washing machines', 46),
75('Dryers', 'Dryers', 46),
76('Climate', 'Climate control', 39),
77('Air Conditioners', 'Air conditioners', 48),
78('Heaters', 'Heaters', 48),
79('Small Appliances', 'Small appliances', 39),
80('Irons', 'Irons', 51),
81('Kettles', 'Kettles', 51),
82('Fans', 'Fans', 51),
83
84-- Home & Garden
85('Home Living', 'Home living products', 3),
86('Furniture & Seating', 'Furniture and seating', 55),
87('Storage & Organization', 'Storage solutions', 55),
88('Lighting & Ambience', 'Lighting products', 55),
89('Textiles & Comfort', 'Textiles and comfort items', 55),
90('Home Essentials', 'Home essential products', 3),
91('Kitchen & Dining', 'Kitchen and dining products', 60),
92('Cleaning & Maintenance', 'Cleaning products', 60),
93('Laundry Care', 'Laundry care products', 60),
94('Outdoor & Garden', 'Outdoor and garden products', 3),
95('Garden Tools', 'Garden tools', 63),
96('Plants & Pots', 'Plants and pots', 63),
97('Outdoor Furniture', 'Outdoor furniture', 63),
98('BBQ & Cooking', 'BBQ and outdoor cooking', 63),
99('Home Improvement', 'Home improvement products', 3),
100('Tools & Hardware', 'Tools and hardware', 68),
101('Paint & Decor Materials', 'Paint and decoration', 68),
102('Electrical & Plumbing', 'Electrical and plumbing', 68),
103('Storage Installation', 'Storage installation', 68),
104('Smart Home', 'Smart home products', 3),
105('Smart Lighting', 'Smart lighting', 73),
106('Security Cameras', 'Security cameras', 73),
107('Smart Sensors', 'Smart sensors', 73),
108('Home Automation Devices', 'Home automation', 73),
109
110-- Sports & Outdoors
111('Fitness', 'Fitness equipment', 4),
112('Cardio Equipment', 'Cardio equipment', 78),
113('Strength Training', 'Strength training equipment', 78),
114('Yoga & Pilates', 'Yoga and pilates equipment', 78),
115('Outdoor', 'Outdoor activities', 4),
116('Camping & Hiking', 'Camping and hiking gear', 82),
117('Cycling', 'Cycling equipment', 82),
118('Water Sports', 'Water sports equipment', 82),
119
120-- Books And More
121('Books', 'Books', 5),
122('Catalogs', 'Catalogs', 5),
123('Comics', 'Comics', 5),
124('Magazines', 'Magazines', 5),
125
126-- Automotive
127('Car Parts', 'Vehicle spare parts', 6),
128('Motorcycles', 'Motorcycles and parts', 6),
129('Cars', 'Passenger vehicles', 6),
130('Trucks', 'Heavy vehicles', 6),
131('Car Electronics', 'Electronics for vehicles', 6),
132('Tires & Wheels', 'Car tires and wheels', 6),
133('Car Accessories', 'Interior and exterior accessories', 6),
134('Car Care', 'Cleaning and maintenance products', 6),
135('Engine Parts', 'Engine components', 90),
136('Brake Parts', 'Brake system components', 90),
137('Suspension', 'Suspension system parts', 90),
138
139-- Real Estate
140('Residential', 'Living properties', 7),
141('Apartments', 'Apartments and flats', 101),
142('Houses', 'Houses and villas', 101),
143('Commercial', 'Business properties', 7),
144('Offices', 'Office spaces', 104),
145('Shops', 'Retail spaces', 104),
146('Land', 'Plots and land', 7),
147('Agricultural Land', 'Farming land', 107),
148('Construction Land', 'Land for building', 107);
149
150
151
152
153SELECT * FROM category ORDER BY category_id;
154
155
156
157
158UPDATE category SET parent_category = 58 WHERE category_id IN (59,60,61,62);
159UPDATE category SET parent_category = 63 WHERE category_id IN (64,65,66);
160UPDATE category SET parent_category = 67 WHERE category_id IN (68,69,70,71);
161UPDATE category SET parent_category = 72 WHERE category_id IN (73,74,75,76);
162UPDATE category SET parent_category = 77 WHERE category_id IN (78,79,80,81);
163UPDATE category SET parent_category = 82 WHERE category_id IN (83,84,85);
164UPDATE category SET parent_category = 86 WHERE category_id IN (87,88,89);
165UPDATE category SET parent_category = 94 WHERE category_id IN (102,103,104);
166UPDATE category SET parent_category = 105 WHERE category_id IN (106,107);
167UPDATE category SET parent_category = 108 WHERE category_id IN (109,110);
168UPDATE category SET parent_category = 111 WHERE category_id IN (112,113);
169
170
171
172
173
174--CATEGORY ATRIBUTES
175
176truncate table CategoryAttributes cascade;
177
178
179ALTER SEQUENCE categoryattributes_category_attribute_id_seq RESTART WITH 1;
180
181INSERT INTO CategoryAttributes (category_id, attribute_name) VALUES
182-- T-Shirts (5)
183(11, 'Size'),(11, 'Color'),(11, 'Gender'),(11, 'Brand'),(11, 'Material'),(11, 'Fit'),(11, 'Condition'),
184-- Shirts (6)
185(12, 'Size'),(12, 'Color'),(12, 'Gender'),(12, 'Brand'),(12, 'Sleeve Type'),(12, 'Material'),(12, 'Fit'),(12, 'Condition'),
186-- Jeans (7)
187(13, 'Waist Size'),(13, 'Length'),(13, 'Fit'),(13, 'Color'),(13, 'Gender'),(13, 'Brand'),(13, 'Condition'),
188-- Jackets (8)
189(14, 'Size'),(14, 'Color'),(14, 'Gender'),(14, 'Material'),(14, 'Type'),(14, 'Brand'),(14, 'Condition'),
190-- Dresses (9)
191(15, 'Size'),(15, 'Color'),(15, 'Gender'),(15, 'Brand'),(15, 'Material'),(15, 'Occasion'),(15, 'Length'),(15, 'Condition'),
192-- Sneakers (10)
193(16, 'Size'),(16, 'Color'),(16, 'Gender'),(16, 'Brand'),(16, 'Material'),(16, 'Sport Type'),(16, 'Condition'),
194-- Boots (11)
195(17, 'Size'),(17, 'Color'),(17, 'Gender'),(17, 'Material'),(17, 'Waterproof'),(17, 'Brand'),(17, 'Condition'),
196-- Heels (12)
197(18, 'Size'),(18, 'Heel Height'),(18, 'Color'),(18, 'Gender'),(18, 'Brand'),(18, 'Material'),(18, 'Condition'),
198-- Bags (13)
199(19, 'Type'),(19, 'Material'),(19, 'Color'),(19, 'Gender'),(19, 'Brand'),(19, 'Size'),(19, 'Condition'),
200-- Belts (14)
201(20, 'Material'),(20, 'Color'),(20, 'Size'),(20, 'Gender'),(20, 'Brand'),(20, 'Condition'),
202-- Hats (15)
203(21, 'Size'),(21, 'Color'),(21, 'Material'),(21, 'Gender'),(21, 'Brand'),(21, 'Condition'),
204-- Watches (16)
205(22, 'Brand'),(22, 'Gender'),(22, 'Strap Material'),(22, 'Case Material'),(22, 'Movement Type'),(22, 'Water Resistance'),(22, 'Color'),(22, 'Condition'),
206-- Sunglasses (17)
207(23, 'Brand'),(23, 'Gender'),(23, 'Frame Type'),(23, 'Lens Color'),(23, 'UV Protection'),(23, 'Material'),(23, 'Condition');
208
209
210
211
212
213
214
215
216
217
218INSERT INTO CategoryAttributes (category_id, attribute_name) VALUES
219-- Smartphones (25)
220(25, 'Brand'),(25, 'RAM'),(25, 'Storage'),(25, 'Screen Size'),(25, 'Battery'),(25, 'Camera'),(25, '5G Support'),(25, 'Color'),(25, 'Condition'),
221-- Feature Phones (26)
222(26, 'Brand'),(26, 'Battery'),(26, 'Color'),(26, 'Condition'),
223-- Laptops (28)
224(28, 'Brand'),(28, 'CPU'),(28, 'GPU'),(28, 'RAM'),(28, 'Storage'),(28, 'Screen Size'),(28, 'Type'),(28, 'Condition'),
225-- Desktops (29)
226(29, 'Brand'),(29, 'CPU'),(29, 'GPU'),(29, 'RAM'),(29, 'Storage'),(29, 'Condition'),
227-- Televisions (32)
228(32, 'Brand'),(32, 'Size'),(32, 'Resolution'),(32, 'Smart TV'),(32, 'Refresh Rate'),(32, 'Condition'),
229-- Speakers (33)
230(33, 'Brand'),(33, 'Type'),(33, 'Connectivity'),(33, 'Power Output'),(33, 'Condition'),
231-- Headphones (34)
232(34, 'Brand'),(34, 'Type'),(34, 'Noise Cancelling'),(34, 'Battery Life'),(34, 'Condition'),
233-- Consoles (36)
234(36, 'Brand'),(36, 'Storage'),(36, 'Generation'),(36, 'Bundle Type'),(36, 'Condition'),
235-- Games (37)
236(37, 'Platform'),(37, 'Genre'),(37, 'Age Rating'),(37, 'Condition'),
237-- Refrigerators (41)
238(41, 'Brand'),(41, 'Capacity (L)'),(41, 'Type'),(41, 'Energy Class'),(41, 'Color'),(41, 'Inverter'),(41, 'Condition'),
239-- Ovens (42)
240(42, 'Brand'),(42, 'Type'),(42, 'Capacity'),(42, 'Energy Source'),(42, 'Color'),(42, 'Condition'),
241-- Coffee Machines (44)
242(44, 'Brand'),(44, 'Type'),(44, 'Pressure'),(44, 'Water Tank Size'),(44, 'Condition'),
243-- Vacuum Cleaners (46)
244(46, 'Brand'),(46, 'Type'),(46, 'Power'),(46, 'Bagless'),(46, 'Battery Life'),(46, 'Condition'),
245-- Washing Machines (49)
246(49, 'Brand'),(49, 'Capacity (kg)'),(49, 'Spin Speed'),(49, 'Energy Class'),(49, 'Type'),(49, 'Condition'),
247-- Air Conditioners (52)
248(52, 'Brand'),(52, 'BTU'),(52, 'Inverter'),(52, 'Energy Class'),(52, 'Condition'),
249-- Irons (55)
250(55, 'Brand'),(55, 'Power'),(55, 'Steam'),(55, 'Plate Type'),(55, 'Condition');
251
252
253
254
255
256INSERT INTO CategoryAttributes (category_id, attribute_name) VALUES
257-- Furniture & Seating (59)
258(59, 'Condition'),(59, 'Material'),(59, 'Color'),(59, 'Type'),(59, 'Brand'),
259-- Storage & Organization (60)
260(60, 'Condition'),(60, 'Material'),(60, 'Size'),(60, 'Type'),(60, 'Brand'),
261-- Lighting & Ambience (61)
262(61, 'Condition'),(61, 'Type'),(61, 'Power Source'),(61, 'Color Temperature'),(61, 'Brand'),
263-- Textiles & Comfort (62)
264(62, 'Condition'),(62, 'Material'),(62, 'Size'),(62, 'Color'),(62, 'Brand'),
265-- Kitchen & Dining (64)
266(64, 'Condition'),(64, 'Material'),(64, 'Type'),(64, 'Capacity'),(64, 'Brand'),
267-- Cleaning & Maintenance (65)
268(65, 'Condition'),(65, 'Type'),(65, 'Power'),(65, 'Bagless'),(65, 'Brand'),
269-- Laundry Care (66)
270(66, 'Condition'),(66, 'Capacity'),(66, 'Energy Class'),(66, 'Type'),(66, 'Brand'),
271-- Garden Tools (68)
272(68, 'Condition'),(68, 'Type'),(68, 'Power Source'),(68, 'Material'),(68, 'Brand'),
273-- Plants & Pots (69)
274(69, 'Condition'),(69, 'Type'),(69, 'Material'),(69, 'Size'),
275-- Outdoor Furniture (70)
276(70, 'Condition'),(70, 'Material'),(70, 'Weather Resistant'),(70, 'Color'),(70, 'Brand'),
277-- BBQ & Cooking (71)
278(71, 'Condition'),(71, 'Fuel Type'),(71, 'Material'),(71, 'Size'),(71, 'Brand'),
279-- Tools & Hardware (73)
280(73, 'Condition'),(73, 'Type'),(73, 'Power'),(73, 'Battery'),(73, 'Brand'),
281-- Paint & Decor Materials (74)
282(74, 'Condition'),(74, 'Type'),(74, 'Color'),(74, 'Volume'),
283-- Electrical & Plumbing (75)
284(75, 'Condition'),(75, 'Type'),(75, 'Voltage'),(75, 'Material'),
285-- Storage Installation (76)
286(76, 'Condition'),(76, 'Type'),(76, 'Material'),(76, 'Size'),
287-- Smart Lighting (78)
288(78, 'Condition'),(78, 'Connectivity'),(78, 'Power'),(78, 'Brand'),
289-- Security Cameras (79)
290(79, 'Condition'),(79, 'Resolution'),(79, 'Connectivity'),(79, 'Brand'),
291-- Smart Sensors (80)
292(80, 'Condition'),(80, 'Sensor Type'),(80, 'Connectivity'),(80, 'Brand'),
293-- Home Automation Devices (81)
294(81, 'Condition'),(81, 'Type'),(81, 'Connectivity'),(81, 'Brand');
295
296
297
298
299
300
301
302
303
304INSERT INTO CategoryAttributes (category_id, attribute_name) VALUES
305-- Cardio Equipment (83)
306(83, 'Condition'),(83, 'Type'),(83, 'Resistance Level'),(83, 'Brand'),
307-- Strength Training (84)
308(84, 'Condition'),(84, 'Weight'),(84, 'Material'),(84, 'Brand'),
309-- Yoga & Pilates (85)
310(85, 'Condition'),(85, 'Material'),(85, 'Thickness'),(85, 'Brand'),
311-- Camping & Hiking (87)
312(87, 'Condition'),(87, 'Capacity'),(87, 'Season Type'),(87, 'Brand'),
313-- Cycling (88)
314(88, 'Condition'),(88, 'Type'),(88, 'Frame Material'),(88, 'Gear Count'),(88, 'Brand'),
315-- Water Sports (89)
316(89, 'Condition'),(89, 'Type'),(89, 'Material'),(89, 'Size'),(89, 'Brand');
317
318
319
320
321
322
323
324
325INSERT INTO CategoryAttributes (category_id, attribute_name) VALUES
326-- Books (90)
327(90, 'Condition'),(90, 'Author'),(90, 'Publisher'),(90, 'Publication Year'),(90, 'Language'),(90, 'Format'),(90, 'Genre'),
328-- Catalogs (91)
329(91, 'Condition'),(91, 'Publisher'),(91, 'Language'),(91, 'Publication Year'),
330-- Comics (92)
331(92, 'Condition'),(92, 'Author'),(92, 'Publisher'),(92, 'Volume'),
332-- Magazines (93)
333(93, 'Condition'),(93, 'Publisher'),(93, 'Issue Number'),(93, 'Month'),(93, 'Language'),
334
335-- Motorcycles (95)
336(95, 'Condition'),(95, 'Brand'),(95, 'Engine Capacity'),(95, 'Fuel Type'),(95, 'Mileage'),
337-- Cars (96)
338(96, 'Condition'),(96, 'Brand'),(96, 'Model'),(96, 'Fuel Type'),(96, 'Mileage'),(96, 'Transmission'),
339-- Trucks (97)
340(97, 'Condition'),(97, 'Brand'),(97, 'Load Capacity'),(97, 'Fuel Type'),
341-- Car Electronics (98)
342(98, 'Condition'),(98, 'Brand'),(98, 'Compatibility'),(98, 'Power'),
343-- Tires & Wheels (99)
344(99, 'Condition'),(99, 'Brand'),(99, 'Size'),(99, 'Season'),
345-- Car Accessories (100)
346(100, 'Condition'),(100, 'Brand'),(100, 'Type'),(100, 'Material'),
347-- Car Care (101)
348(101, 'Condition'),(101, 'Brand'),(101, 'Type'),(101, 'Volume'),
349-- Engine Parts (102)
350(102, 'Condition'),(102, 'Brand'),(102, 'Engine Type'),(102, 'Compatibility'),
351-- Brake Parts (103)
352(103, 'Condition'),(103, 'Brand'),(103, 'Type'),(103, 'Compatibility'),
353-- Suspension (104)
354(104, 'Condition'),(104, 'Brand'),(104, 'Type'),(104, 'Compatibility'),
355
356-- Apartments (106)
357(106, 'Condition'),(106, 'Area (m²)'),(106, 'Rooms'),(106, 'Floor'),(106, 'Furnished'),(106, 'Heating Type'),(106, 'Location'),(106, 'Listing Type'),
358-- Houses (107)
359(107, 'Condition'),(107, 'Area (m²)'),(107, 'Rooms'),(107, 'Floors'),(107, 'Yard Size'),(107, 'Furnished'),(107, 'Heating Type'),(107, 'Location'),(107, 'Listing Type'),
360-- Offices (109)
361(109, 'Condition'),(109, 'Area (m²)'),(109, 'Floor'),(109, 'Furnished'),(109, 'Parking'),(109, 'Location'),(109, 'Listing Type'),
362-- Shops (110)
363(110, 'Condition'),(110, 'Area (m²)'),(110, 'Location'),(110, 'Parking'),(110, 'Usage Type'),(110, 'Listing Type'),
364-- Agricultural Land (112)
365(112, 'Area (m²)'),(112, 'Soil Type'),(112, 'Water Access'),(112, 'Location'),(112, 'Listing Type'),
366-- Construction Land (113)
367(113, 'Area (m²)'),(113, 'Building Permit'),(113, 'Infrastructure'),(113, 'Location'),(113, 'Listing Type');
368
369
370
371
372UPDATE Category SET parent_category = 45 WHERE category_id IN (46,47);
373UPDATE Category SET parent_category = 48 WHERE category_id IN (49,50);
374UPDATE Category SET parent_category = 51 WHERE category_id IN (52,53);
375UPDATE Category SET parent_category = 54 WHERE category_id IN (55,56,57);
376
377
378
379
380INSERT INTO CategoryAttributes (category_id, attribute_name)
381VALUES (96, 'Year');
382
383
384
385INSERT INTO CategoryAttributes (category_id, attribute_name)
386VALUES (106, 'Balcony');
387
388
389
390
391-- CATEGORY ATTRIBUTE VALUES
392
393
394INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
395SELECT category_attribute_id, v.val
396FROM CategoryAttributes,
397(VALUES
398('Black'), ('White'), ('Gray'), ('Blue'), ('Red'),
399('Green'), ('Yellow'), ('Pink'), ('Purple'),
400('Brown'), ('Beige'), ('Silver'), ('Gold')
401) AS v(val)
402WHERE attribute_name = 'Color';
403
404
405INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
406SELECT category_attribute_id, v.val
407FROM CategoryAttributes,
408(VALUES ('New'), ('Used')) AS v(val)
409WHERE attribute_name = 'Condition';
410
411
412
413INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
414SELECT category_attribute_id, v.val
415FROM CategoryAttributes,
416(VALUES ('Male'), ('Female'), ('Unisex')) AS v(val)
417WHERE attribute_name = 'Gender';
418
419
420INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
421SELECT category_attribute_id, v.val
422FROM CategoryAttributes,
423(VALUES ('Slim'), ('Regular'), ('Loose'), ('Oversized')) AS v(val)
424WHERE attribute_name = 'Fit';
425
426
427INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
428SELECT category_attribute_id, v.val
429FROM CategoryAttributes,
430(VALUES ('Short Sleeve'), ('Long Sleeve'), ('Sleeveless')) AS v(val)
431WHERE attribute_name = 'Sleeve Type';
432
433
434INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
435SELECT category_attribute_id, v.val
436FROM CategoryAttributes,
437(VALUES ('Casual'), ('Formal'), ('Sport'), ('Party'), ('Business')) AS v(val)
438WHERE attribute_name = 'Occasion';
439
440
441INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
442SELECT category_attribute_id, v.val
443FROM CategoryAttributes,
444(VALUES ('4GB'), ('8GB'), ('16GB'), ('32GB'), ('64GB')) AS v(val)
445WHERE attribute_name = 'RAM';
446
447
448INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
449SELECT category_attribute_id, v.val
450FROM CategoryAttributes,
451(VALUES
452('64GB'), ('128GB'), ('256GB'), ('512GB'),
453('1TB'), ('2TB')
454) AS v(val)
455WHERE attribute_name = 'Storage';
456
457INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
458SELECT category_attribute_id, v.val
459FROM CategoryAttributes,
460(VALUES ('Yes'), ('No')) AS v(val)
461WHERE attribute_name = '5G Support';
462
463INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
464SELECT category_attribute_id, v.val
465FROM CategoryAttributes,
466(VALUES ('Yes'), ('No')) AS v(val)
467WHERE attribute_name = 'Smart TV';
468
469
470INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
471SELECT category_attribute_id, v.val
472FROM CategoryAttributes,
473(VALUES ('Bluetooth'), ('WiFi'), ('Wired'), ('Bluetooth + WiFi')) AS v(val)
474WHERE attribute_name = 'Connectivity';
475
476INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
477SELECT category_attribute_id, v.val
478FROM CategoryAttributes,
479(VALUES ('A+++'), ('A++'), ('A+'), ('A'), ('B'), ('C')) AS v(val)
480WHERE attribute_name = 'Energy Class';
481
482INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
483SELECT category_attribute_id, v.val
484FROM CategoryAttributes,
485(VALUES ('Petrol'), ('Diesel'), ('Electric'), ('Hybrid')) AS v(val)
486WHERE attribute_name = 'Fuel Type';
487
488
489INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
490SELECT category_attribute_id, v.val
491FROM CategoryAttributes,
492(VALUES ('Manual'), ('Automatic')) AS v(val)
493WHERE attribute_name = 'Transmission';
494
495INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
496SELECT category_attribute_id, v.val
497FROM CategoryAttributes,
498(VALUES ('Yes'), ('No')) AS v(val)
499WHERE attribute_name = 'Furnished';
500
501INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
502SELECT category_attribute_id, v.val
503FROM CategoryAttributes,
504(VALUES ('Sale'), ('Rent')) AS v(val)
505WHERE attribute_name = 'Listing Type';
506
507INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
508SELECT category_attribute_id, v.val
509FROM CategoryAttributes,
510(VALUES ('Yes'), ('No')) AS v(val)
511WHERE attribute_name = 'Balcony';
512
513
514INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
515SELECT category_attribute_id, y::text
516FROM CategoryAttributes,
517generate_series(1990, 2025) AS y
518WHERE attribute_name = 'Year';
519
520
521INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
522SELECT category_attribute_id, v.val
523FROM CategoryAttributes,
524(VALUES
525('Apple'), ('Samsung'), ('Xiaomi'), ('Huawei'), ('Google'), ('OnePlus')
526) AS v(val)
527WHERE category_id = 25 AND attribute_name = 'Brand';
528
529
530INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
531SELECT category_attribute_id, v.val
532FROM CategoryAttributes,
533(VALUES
534('Dell'), ('HP'), ('Lenovo'), ('Asus'), ('Acer'), ('Apple'), ('MSI')
535) AS v(val)
536WHERE category_id = 28 AND attribute_name = 'Brand';
537
538
539INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
540SELECT category_attribute_id, v.val
541FROM CategoryAttributes,
542(VALUES
543('Samsung'), ('LG'), ('Sony'), ('Philips'), ('TCL')
544) AS v(val)
545WHERE category_id = 32 AND attribute_name = 'Brand';
546
547
548INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
549SELECT category_attribute_id, v.val
550FROM CategoryAttributes,
551(VALUES
552('JBL'), ('Sony'), ('Bose'), ('LG'), ('Samsung')
553) AS v(val)
554WHERE category_id = 33 AND attribute_name = 'Brand';
555
556
557INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
558SELECT category_attribute_id, v.val
559FROM CategoryAttributes,
560(VALUES
561('Sony'), ('Bose'), ('JBL'), ('Apple'), ('Sennheiser')
562) AS v(val)
563WHERE category_id = 34 AND attribute_name = 'Brand';
564
565INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
566SELECT category_attribute_id, v.val
567FROM CategoryAttributes,
568(VALUES
569('Sony'), ('Microsoft'), ('Nintendo')
570) AS v(val)
571WHERE category_id = 36 AND attribute_name = 'Brand';
572
573INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
574SELECT category_attribute_id, v.val
575FROM CategoryAttributes,
576(VALUES
577('Samsung'), ('LG'), ('Bosch'), ('Beko'), ('Whirlpool')
578) AS v(val)
579WHERE category_id = 41 AND attribute_name = 'Brand';
580
581
582INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
583SELECT category_attribute_id, v.val
584FROM CategoryAttributes,
585(VALUES
586('Bosch'), ('Beko'), ('Gorenje'), ('Samsung'), ('Electrolux')
587) AS v(val)
588WHERE category_id = 42 AND attribute_name = 'Brand';
589
590
591INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
592SELECT category_attribute_id, v.val
593FROM CategoryAttributes,
594(VALUES
595('DeLonghi'), ('Philips'), ('Krups'), ('Bosch')
596) AS v(val)
597WHERE category_id = 44 AND attribute_name = 'Brand';
598
599
600INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
601SELECT category_attribute_id, v.val
602FROM CategoryAttributes,
603(VALUES
604('Dyson'), ('Bosch'), ('Philips'), ('Samsung'), ('Rowenta')
605) AS v(val)
606WHERE category_id = 46 AND attribute_name = 'Brand';
607
608
609INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
610SELECT category_attribute_id, v.val
611FROM CategoryAttributes,
612(VALUES
613('Bosch'), ('LG'), ('Samsung'), ('Beko'), ('Whirlpool')
614) AS v(val)
615WHERE category_id = 49 AND attribute_name = 'Brand';
616
617
618INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
619SELECT category_attribute_id, v.val
620FROM CategoryAttributes,
621(VALUES
622('Daikin'), ('Mitsubishi'), ('Gree'), ('Samsung'), ('LG')
623) AS v(val)
624WHERE category_id = 52 AND attribute_name = 'Brand';
625
626
627INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
628SELECT category_attribute_id, v.val
629FROM CategoryAttributes,
630(VALUES
631('Nike'), ('Adidas'), ('Zara'), ('H&M'), ('Puma')
632) AS v(val)
633WHERE category_id = 11 AND attribute_name = 'Brand';
634
635INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
636SELECT category_attribute_id, v.val
637FROM CategoryAttributes,
638(VALUES
639('Nike'), ('Adidas'), ('Puma'), ('New Balance'), ('Reebok')
640) AS v(val)
641WHERE category_id = 16 AND attribute_name = 'Brand';
642
643
644INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
645SELECT category_attribute_id, v.val
646FROM CategoryAttributes,
647(VALUES
648('Nike'), ('Adidas'), ('Guess'), ('Michael Kors'), ('Zara')
649) AS v(val)
650WHERE category_id = 19 AND attribute_name = 'Brand';
651
652
653INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
654SELECT category_attribute_id, v.val
655FROM CategoryAttributes,
656(VALUES
657('BMW'), ('Mercedes-Benz'), ('Audi'), ('Volkswagen'),
658('Toyota'), ('Ford'), ('Honda'), ('Hyundai')
659) AS v(val)
660WHERE category_id = 96 AND attribute_name = 'Brand';
661
662
663INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
664SELECT category_attribute_id, v.val
665FROM CategoryAttributes,
666(VALUES
667('Yamaha'), ('Honda'), ('Kawasaki'), ('Suzuki'), ('Ducati')
668) AS v(val)
669WHERE category_id = 95 AND attribute_name = 'Brand';
670
671
672INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
673SELECT category_attribute_id, v.val
674FROM CategoryAttributes,
675(VALUES
676('Bosch'), ('Valeo'), ('Denso'), ('Continental')
677) AS v(val)
678WHERE category_id = 94 AND attribute_name = 'Brand';
679
680
681
682
683-- Material (Облека - T-Shirts, Shirts, Jeans, Jackets, Dresses)
684INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
685SELECT category_attribute_id, v.val
686FROM CategoryAttributes,
687(VALUES ('Cotton'), ('Polyester'), ('Denim'), ('Wool'), ('Silk'), ('Linen'), ('Synthetic'), ('Fleece')) AS v(val)
688WHERE attribute_name = 'Material' AND category_id IN (11,12,13,14,15);
689
690-- Material (Чевли - Sneakers, Boots, Heels)
691INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
692SELECT category_attribute_id, v.val
693FROM CategoryAttributes,
694(VALUES ('Leather'), ('Synthetic'), ('Canvas'), ('Suede'), ('Rubber'), ('Textile')) AS v(val)
695WHERE attribute_name = 'Material' AND category_id IN (16,17,18);
696
697-- Material (Bags, Belts, Hats, Watches, Sunglasses)
698INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
699SELECT category_attribute_id, v.val
700FROM CategoryAttributes,
701(VALUES ('Leather'), ('Synthetic'), ('Canvas'), ('Nylon'), ('Metal'), ('Plastic')) AS v(val)
702WHERE attribute_name = 'Material' AND category_id IN (19,20,21,22,23);
703
704-- Material (Furniture & Seating)
705INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
706SELECT category_attribute_id, v.val
707FROM CategoryAttributes,
708(VALUES ('Wood'), ('Metal'), ('Plastic'), ('Fabric'), ('Leather'), ('Glass')) AS v(val)
709WHERE attribute_name = 'Material' AND category_id = 59;
710
711-- Material (Storage & Organization)
712INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
713SELECT category_attribute_id, v.val
714FROM CategoryAttributes,
715(VALUES ('Plastic'), ('Metal'), ('Wood'), ('Fabric'), ('Bamboo')) AS v(val)
716WHERE attribute_name = 'Material' AND category_id = 60;
717
718-- Material (Textiles & Comfort)
719INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
720SELECT category_attribute_id, v.val
721FROM CategoryAttributes,
722(VALUES ('Cotton'), ('Polyester'), ('Wool'), ('Silk'), ('Linen'), ('Bamboo')) AS v(val)
723WHERE attribute_name = 'Material' AND category_id = 62;
724
725-- Material (Kitchen & Dining)
726INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
727SELECT category_attribute_id, v.val
728FROM CategoryAttributes,
729(VALUES ('Stainless Steel'), ('Ceramic'), ('Glass'), ('Plastic'), ('Wood'), ('Silicone')) AS v(val)
730WHERE attribute_name = 'Material' AND category_id = 64;
731
732-- Material (Garden Tools)
733INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
734SELECT category_attribute_id, v.val
735FROM CategoryAttributes,
736(VALUES ('Metal'), ('Plastic'), ('Wood'), ('Rubber'), ('Fiberglass')) AS v(val)
737WHERE attribute_name = 'Material' AND category_id = 68;
738
739-- Material (Plants & Pots)
740INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
741SELECT category_attribute_id, v.val
742FROM CategoryAttributes,
743(VALUES ('Ceramic'), ('Plastic'), ('Terracotta'), ('Wood'), ('Metal'), ('Fiberglass')) AS v(val)
744WHERE attribute_name = 'Material' AND category_id = 69;
745
746-- Material (Outdoor Furniture)
747INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
748SELECT category_attribute_id, v.val
749FROM CategoryAttributes,
750(VALUES ('Aluminum'), ('Teak Wood'), ('Rattan'), ('Steel'), ('Plastic'), ('Wicker')) AS v(val)
751WHERE attribute_name = 'Material' AND category_id = 70;
752
753-- Material (BBQ)
754INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
755SELECT category_attribute_id, v.val
756FROM CategoryAttributes,
757(VALUES ('Stainless Steel'), ('Cast Iron'), ('Aluminum'), ('Porcelain')) AS v(val)
758WHERE attribute_name = 'Material' AND category_id = 71;
759
760-- Material (Electrical & Plumbing)
761INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
762SELECT category_attribute_id, v.val
763FROM CategoryAttributes,
764(VALUES ('Copper'), ('PVC'), ('Steel'), ('Plastic'), ('Brass')) AS v(val)
765WHERE attribute_name = 'Material' AND category_id = 75;
766
767-- Material (Storage Installation)
768INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
769SELECT category_attribute_id, v.val
770FROM CategoryAttributes,
771(VALUES ('Metal'), ('Wood'), ('Plastic'), ('MDF')) AS v(val)
772WHERE attribute_name = 'Material' AND category_id = 76;
773
774-- Material (Yoga & Pilates)
775INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
776SELECT category_attribute_id, v.val
777FROM CategoryAttributes,
778(VALUES ('TPE'), ('PVC'), ('Natural Rubber'), ('Cork'), ('Foam')) AS v(val)
779WHERE attribute_name = 'Material' AND category_id = 85;
780
781-- Material (Strength Training)
782INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
783SELECT category_attribute_id, v.val
784FROM CategoryAttributes,
785(VALUES ('Iron'), ('Steel'), ('Rubber Coated'), ('Chrome'), ('Neoprene')) AS v(val)
786WHERE attribute_name = 'Material' AND category_id = 84;
787
788-- Material (Water Sports)
789INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
790SELECT category_attribute_id, v.val
791FROM CategoryAttributes,
792(VALUES ('Neoprene'), ('Nylon'), ('Polyester'), ('PVC'), ('Carbon Fiber')) AS v(val)
793WHERE attribute_name = 'Material' AND category_id = 89;
794
795-- Material (Car Accessories)
796INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
797SELECT category_attribute_id, v.val
798FROM CategoryAttributes,
799(VALUES ('Plastic'), ('Leather'), ('Rubber'), ('Metal'), ('Fabric')) AS v(val)
800WHERE attribute_name = 'Material' AND category_id = 100;
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816-- Size (облека)
817INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
818SELECT category_attribute_id, v.val
819FROM CategoryAttributes,
820(VALUES ('XS'), ('S'), ('M'), ('L'), ('XL'), ('XXL'), ('XXXL')) AS v(val)
821WHERE attribute_name = 'Size' AND category_id IN (11,12,13,14,15,19,20,21);
822
823-- Size (чевли)
824INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
825SELECT category_attribute_id, v.val
826FROM CategoryAttributes,
827(VALUES ('36'), ('37'), ('38'), ('39'), ('40'), ('41'), ('42'), ('43'), ('44'), ('45')) AS v(val)
828WHERE attribute_name = 'Size' AND category_id IN (16,17,18);
829
830-- Waist Size
831INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
832SELECT category_attribute_id, v.val
833FROM CategoryAttributes,
834(VALUES ('28'), ('30'), ('32'), ('34'), ('36'), ('38'), ('40')) AS v(val)
835WHERE attribute_name = 'Waist Size';
836
837-- Length (Jeans)
838INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
839SELECT category_attribute_id, v.val
840FROM CategoryAttributes,
841(VALUES ('28'), ('30'), ('32'), ('34')) AS v(val)
842WHERE attribute_name = 'Length' AND category_id = 13;
843
844-- Length (Dresses)
845INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
846SELECT category_attribute_id, v.val
847FROM CategoryAttributes,
848(VALUES ('Mini'), ('Midi'), ('Maxi')) AS v(val)
849WHERE attribute_name = 'Length' AND category_id = 15;
850
851-- Heel Height
852INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
853SELECT category_attribute_id, v.val
854FROM CategoryAttributes,
855(VALUES ('Flat'), ('Low (1-3cm)'), ('Mid (4-6cm)'), ('High (7cm+)')) AS v(val)
856WHERE attribute_name = 'Heel Height';
857
858-- Waterproof
859INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
860SELECT category_attribute_id, v.val
861FROM CategoryAttributes,
862(VALUES ('Yes'), ('No')) AS v(val)
863WHERE attribute_name = 'Waterproof';
864
865-- Sport Type
866INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
867SELECT category_attribute_id, v.val
868FROM CategoryAttributes,
869(VALUES ('Running'), ('Basketball'), ('Football'), ('Tennis'), ('Casual'), ('Training')) AS v(val)
870WHERE attribute_name = 'Sport Type';
871
872-- Frame Type (Sunglasses)
873INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
874SELECT category_attribute_id, v.val
875FROM CategoryAttributes,
876(VALUES ('Full Frame'), ('Half Frame'), ('Rimless'), ('Wrap')) AS v(val)
877WHERE attribute_name = 'Frame Type';
878
879-- UV Protection
880INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
881SELECT category_attribute_id, v.val
882FROM CategoryAttributes,
883(VALUES ('UV400'), ('UV380'), ('Polarized')) AS v(val)
884WHERE attribute_name = 'UV Protection';
885
886-- Movement Type (Watches)
887INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
888SELECT category_attribute_id, v.val
889FROM CategoryAttributes,
890(VALUES ('Quartz'), ('Automatic'), ('Manual'), ('Solar')) AS v(val)
891WHERE attribute_name = 'Movement Type';
892
893-- Water Resistance
894INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
895SELECT category_attribute_id, v.val
896FROM CategoryAttributes,
897(VALUES ('30m'), ('50m'), ('100m'), ('200m'), ('Not Water Resistant')) AS v(val)
898WHERE attribute_name = 'Water Resistance';
899
900-- Screen Size (Phones/Laptops)
901INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
902SELECT category_attribute_id, v.val
903FROM CategoryAttributes,
904(VALUES ('5.0"'), ('5.5"'), ('6.0"'), ('6.5"'), ('6.7"'), ('7.0"')) AS v(val)
905WHERE attribute_name = 'Screen Size' AND category_id = 25;
906
907INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
908SELECT category_attribute_id, v.val
909FROM CategoryAttributes,
910(VALUES ('13"'), ('14"'), ('15.6"'), ('16"'), ('17"')) AS v(val)
911WHERE attribute_name = 'Screen Size' AND category_id = 28;
912
913-- Battery (Phones)
914INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
915SELECT category_attribute_id, v.val
916FROM CategoryAttributes,
917(VALUES ('3000mAh'), ('4000mAh'), ('5000mAh'), ('6000mAh')) AS v(val)
918WHERE attribute_name = 'Battery' AND category_id IN (25, 26);
919
920-- Camera
921INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
922SELECT category_attribute_id, v.val
923FROM CategoryAttributes,
924(VALUES ('12MP'), ('48MP'), ('64MP'), ('108MP'), ('200MP')) AS v(val)
925WHERE attribute_name = 'Camera';
926
927-- CPU
928INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
929SELECT category_attribute_id, v.val
930FROM CategoryAttributes,
931(VALUES ('Intel i3'), ('Intel i5'), ('Intel i7'), ('Intel i9'), ('AMD Ryzen 5'), ('AMD Ryzen 7'), ('AMD Ryzen 9'), ('Apple M1'), ('Apple M2'), ('Apple M3')) AS v(val)
932WHERE attribute_name = 'CPU';
933
934-- GPU
935INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
936SELECT category_attribute_id, v.val
937FROM CategoryAttributes,
938(VALUES ('NVIDIA GTX 1650'), ('NVIDIA RTX 3060'), ('NVIDIA RTX 4070'), ('AMD Radeon RX 6600'), ('Intel Integrated'), ('Apple M-Series')) AS v(val)
939WHERE attribute_name = 'GPU';
940
941-- Type (Laptops)
942INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
943SELECT category_attribute_id, v.val
944FROM CategoryAttributes,
945(VALUES ('Gaming'), ('Business'), ('Ultrabook'), ('2-in-1'), ('Workstation')) AS v(val)
946WHERE attribute_name = 'Type' AND category_id = 28;
947
948-- Resolution (TV)
949INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
950SELECT category_attribute_id, v.val
951FROM CategoryAttributes,
952(VALUES ('HD'), ('Full HD'), ('4K'), ('8K')) AS v(val)
953WHERE attribute_name = 'Resolution' AND category_id = 32;
954
955-- Refresh Rate
956INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
957SELECT category_attribute_id, v.val
958FROM CategoryAttributes,
959(VALUES ('60Hz'), ('120Hz'), ('144Hz'), ('165Hz'), ('240Hz')) AS v(val)
960WHERE attribute_name = 'Refresh Rate';
961
962-- Size (TV)
963INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
964SELECT category_attribute_id, v.val
965FROM CategoryAttributes,
966(VALUES ('32"'), ('43"'), ('50"'), ('55"'), ('65"'), ('75"'), ('85"')) AS v(val)
967WHERE attribute_name = 'Size' AND category_id = 32;
968
969-- Type (Speakers)
970INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
971SELECT category_attribute_id, v.val
972FROM CategoryAttributes,
973(VALUES ('Portable'), ('Bookshelf'), ('Soundbar'), ('Subwoofer')) AS v(val)
974WHERE attribute_name = 'Type' AND category_id = 33;
975
976-- Power Output
977INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
978SELECT category_attribute_id, v.val
979FROM CategoryAttributes,
980(VALUES ('10W'), ('20W'), ('50W'), ('100W'), ('200W')) AS v(val)
981WHERE attribute_name = 'Power Output';
982
983-- Type (Headphones)
984INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
985SELECT category_attribute_id, v.val
986FROM CategoryAttributes,
987(VALUES ('Over-ear'), ('On-ear'), ('In-ear'), ('True Wireless')) AS v(val)
988WHERE attribute_name = 'Type' AND category_id = 34;
989
990-- Noise Cancelling
991INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
992SELECT category_attribute_id, v.val
993FROM CategoryAttributes,
994(VALUES ('Yes'), ('No')) AS v(val)
995WHERE attribute_name = 'Noise Cancelling';
996
997-- Battery Life
998INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
999SELECT category_attribute_id, v.val
1000FROM CategoryAttributes,
1001(VALUES ('Up to 10h'), ('Up to 20h'), ('Up to 30h'), ('Up to 40h')) AS v(val)
1002WHERE attribute_name = 'Battery Life';
1003
1004-- Generation (Consoles)
1005INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1006SELECT category_attribute_id, v.val
1007FROM CategoryAttributes,
1008(VALUES ('7th Gen'), ('8th Gen'), ('9th Gen')) AS v(val)
1009WHERE attribute_name = 'Generation';
1010
1011-- Bundle Type
1012INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1013SELECT category_attribute_id, v.val
1014FROM CategoryAttributes,
1015(VALUES ('Console Only'), ('Console + Game'), ('Console + Controller')) AS v(val)
1016WHERE attribute_name = 'Bundle Type';
1017
1018-- Platform (Games)
1019INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1020SELECT category_attribute_id, v.val
1021FROM CategoryAttributes,
1022(VALUES ('PlayStation'), ('Xbox'), ('Nintendo Switch'), ('PC')) AS v(val)
1023WHERE attribute_name = 'Platform';
1024
1025-- Genre (Games)
1026INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1027SELECT category_attribute_id, v.val
1028FROM CategoryAttributes,
1029(VALUES ('Action'), ('RPG'), ('Sports'), ('Racing'), ('Strategy'), ('Simulation'), ('Horror')) AS v(val)
1030WHERE attribute_name = 'Genre' AND category_id = 37;
1031
1032-- Age Rating
1033INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1034SELECT category_attribute_id, v.val
1035FROM CategoryAttributes,
1036(VALUES ('3+'), ('7+'), ('12+'), ('16+'), ('18+')) AS v(val)
1037WHERE attribute_name = 'Age Rating';
1038
1039-- Capacity (Fridge)
1040INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1041SELECT category_attribute_id, v.val
1042FROM CategoryAttributes,
1043(VALUES ('100L'), ('200L'), ('300L'), ('400L'), ('500L+')) AS v(val)
1044WHERE attribute_name = 'Capacity (L)';
1045
1046-- Type (Fridge)
1047INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1048SELECT category_attribute_id, v.val
1049FROM CategoryAttributes,
1050(VALUES ('Single Door'), ('Double Door'), ('Side by Side'), ('French Door')) AS v(val)
1051WHERE attribute_name = 'Type' AND category_id = 41;
1052
1053-- Inverter
1054INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1055SELECT category_attribute_id, v.val
1056FROM CategoryAttributes,
1057(VALUES ('Yes'), ('No')) AS v(val)
1058WHERE attribute_name = 'Inverter';
1059
1060-- Type (Oven)
1061INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1062SELECT category_attribute_id, v.val
1063FROM CategoryAttributes,
1064(VALUES ('Electric'), ('Gas'), ('Microwave'), ('Steam')) AS v(val)
1065WHERE attribute_name = 'Type' AND category_id = 42;
1066
1067-- Capacity (Oven)
1068INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1069SELECT category_attribute_id, v.val
1070FROM CategoryAttributes,
1071(VALUES ('30L'), ('45L'), ('60L'), ('90L')) AS v(val)
1072WHERE attribute_name = 'Capacity' AND category_id = 42;
1073
1074-- Energy Source
1075INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1076SELECT category_attribute_id, v.val
1077FROM CategoryAttributes,
1078(VALUES ('Electric'), ('Gas')) AS v(val)
1079WHERE attribute_name = 'Energy Source';
1080
1081-- Type (Coffee)
1082INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1083SELECT category_attribute_id, v.val
1084FROM CategoryAttributes,
1085(VALUES ('Espresso'), ('Filter'), ('Capsule'), ('French Press')) AS v(val)
1086WHERE attribute_name = 'Type' AND category_id = 44;
1087
1088-- Pressure
1089INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1090SELECT category_attribute_id, v.val
1091FROM CategoryAttributes,
1092(VALUES ('6 bar'), ('9 bar'), ('15 bar'), ('20 bar')) AS v(val)
1093WHERE attribute_name = 'Pressure';
1094
1095-- Water Tank Size
1096INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1097SELECT category_attribute_id, v.val
1098FROM CategoryAttributes,
1099(VALUES ('0.5L'), ('1L'), ('1.5L'), ('2L'), ('3L')) AS v(val)
1100WHERE attribute_name = 'Water Tank Size';
1101
1102-- Bagless
1103INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1104SELECT category_attribute_id, v.val
1105FROM CategoryAttributes,
1106(VALUES ('Yes'), ('No')) AS v(val)
1107WHERE attribute_name = 'Bagless';
1108
1109-- Capacity (Washing Machine)
1110INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1111SELECT category_attribute_id, v.val
1112FROM CategoryAttributes,
1113(VALUES ('5kg'), ('6kg'), ('7kg'), ('8kg'), ('9kg'), ('10kg'), ('12kg')) AS v(val)
1114WHERE attribute_name = 'Capacity (kg)';
1115
1116-- Spin Speed
1117INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1118SELECT category_attribute_id, v.val
1119FROM CategoryAttributes,
1120(VALUES ('800rpm'), ('1000rpm'), ('1200rpm'), ('1400rpm'), ('1600rpm')) AS v(val)
1121WHERE attribute_name = 'Spin Speed';
1122
1123-- BTU
1124INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1125SELECT category_attribute_id, v.val
1126FROM CategoryAttributes,
1127(VALUES ('9000 BTU'), ('12000 BTU'), ('18000 BTU'), ('24000 BTU')) AS v(val)
1128WHERE attribute_name = 'BTU';
1129
1130-- Power (Iron)
1131INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1132SELECT category_attribute_id, v.val
1133FROM CategoryAttributes,
1134(VALUES ('1000W'), ('1500W'), ('2000W'), ('2500W'), ('3000W')) AS v(val)
1135WHERE attribute_name = 'Power' AND category_id = 55;
1136
1137-- Steam
1138INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1139SELECT category_attribute_id, v.val
1140FROM CategoryAttributes,
1141(VALUES ('Yes'), ('No')) AS v(val)
1142WHERE attribute_name = 'Steam';
1143
1144-- Plate Type
1145INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1146SELECT category_attribute_id, v.val
1147FROM CategoryAttributes,
1148(VALUES ('Ceramic'), ('Stainless Steel'), ('Titanium'), ('Non-stick')) AS v(val)
1149WHERE attribute_name = 'Plate Type';
1150
1151-- Resistance Level
1152INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1153SELECT category_attribute_id, v.val
1154FROM CategoryAttributes,
1155(VALUES ('Light'), ('Medium'), ('Heavy'), ('Extra Heavy')) AS v(val)
1156WHERE attribute_name = 'Resistance Level';
1157
1158-- Weight (Strength Training)
1159INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1160SELECT category_attribute_id, v.val
1161FROM CategoryAttributes,
1162(VALUES ('1kg'), ('2kg'), ('5kg'), ('10kg'), ('15kg'), ('20kg'), ('25kg'), ('30kg')) AS v(val)
1163WHERE attribute_name = 'Weight';
1164
1165-- Thickness (Yoga)
1166INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1167SELECT category_attribute_id, v.val
1168FROM CategoryAttributes,
1169(VALUES ('3mm'), ('4mm'), ('5mm'), ('6mm'), ('8mm'), ('10mm')) AS v(val)
1170WHERE attribute_name = 'Thickness';
1171
1172-- Season Type (Camping)
1173INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1174SELECT category_attribute_id, v.val
1175FROM CategoryAttributes,
1176(VALUES ('3 Season'), ('4 Season'), ('Summer'), ('Winter')) AS v(val)
1177WHERE attribute_name = 'Season Type';
1178
1179-- Capacity (Camping)
1180INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1181SELECT category_attribute_id, v.val
1182FROM CategoryAttributes,
1183(VALUES ('1 Person'), ('2 Person'), ('3 Person'), ('4 Person'), ('6 Person+')) AS v(val)
1184WHERE attribute_name = 'Capacity' AND category_id = 87;
1185
1186-- Frame Material (Cycling)
1187INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1188SELECT category_attribute_id, v.val
1189FROM CategoryAttributes,
1190(VALUES ('Aluminum'), ('Carbon Fiber'), ('Steel'), ('Titanium')) AS v(val)
1191WHERE attribute_name = 'Frame Material';
1192
1193-- Gear Count
1194INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1195SELECT category_attribute_id, v.val
1196FROM CategoryAttributes,
1197(VALUES ('1'), ('3'), ('7'), ('21'), ('24'), ('27')) AS v(val)
1198WHERE attribute_name = 'Gear Count';
1199
1200-- Format (Books)
1201INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1202SELECT category_attribute_id, v.val
1203FROM CategoryAttributes,
1204(VALUES ('Hardcover'), ('Paperback'), ('E-book'), ('Audiobook')) AS v(val)
1205WHERE attribute_name = 'Format';
1206
1207-- Genre (Books)
1208INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1209SELECT category_attribute_id, v.val
1210FROM CategoryAttributes,
1211(VALUES ('Fiction'), ('Non-Fiction'), ('Science'), ('History'), ('Biography'), ('Fantasy'), ('Mystery'), ('Romance')) AS v(val)
1212WHERE attribute_name = 'Genre' AND category_id = 90;
1213
1214-- Language
1215INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1216SELECT category_attribute_id, v.val
1217FROM CategoryAttributes,
1218(VALUES ('English'), ('Macedonian'), ('German'), ('French'), ('Spanish'), ('Italian')) AS v(val)
1219WHERE attribute_name = 'Language';
1220
1221-- Engine Capacity
1222INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1223SELECT category_attribute_id, v.val
1224FROM CategoryAttributes,
1225(VALUES ('50cc'), ('125cc'), ('250cc'), ('400cc'), ('600cc'), ('800cc'), ('1000cc+')) AS v(val)
1226WHERE attribute_name = 'Engine Capacity';
1227
1228-- Mileage
1229INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1230SELECT category_attribute_id, v.val
1231FROM CategoryAttributes,
1232(VALUES ('0-10,000 km'), ('10,000-50,000 km'), ('50,000-100,000 km'), ('100,000-200,000 km'), ('200,000+ km')) AS v(val)
1233WHERE attribute_name = 'Mileage';
1234
1235-- Season (Tires)
1236INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1237SELECT category_attribute_id, v.val
1238FROM CategoryAttributes,
1239(VALUES ('Summer'), ('Winter'), ('All Season')) AS v(val)
1240WHERE attribute_name = 'Season';
1241
1242-- Heating Type
1243INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1244SELECT category_attribute_id, v.val
1245FROM CategoryAttributes,
1246(VALUES ('Central Heating'), ('Electric'), ('Gas'), ('Underfloor'), ('Heat Pump')) AS v(val)
1247WHERE attribute_name = 'Heating Type';
1248
1249-- Rooms
1250INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1251SELECT category_attribute_id, v.val
1252FROM CategoryAttributes,
1253(VALUES ('Studio'), ('1'), ('2'), ('3'), ('4'), ('5+')) AS v(val)
1254WHERE attribute_name = 'Rooms';
1255
1256-- Floor
1257INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1258SELECT category_attribute_id, v.val
1259FROM CategoryAttributes,
1260(VALUES ('Ground'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('10+')) AS v(val)
1261WHERE attribute_name = 'Floor';
1262
1263-- Floors (Houses)
1264INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1265SELECT category_attribute_id, v.val
1266FROM CategoryAttributes,
1267(VALUES ('1'), ('2'), ('3'), ('4+')) AS v(val)
1268WHERE attribute_name = 'Floors';
1269
1270-- Parking
1271INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1272SELECT category_attribute_id, v.val
1273FROM CategoryAttributes,
1274(VALUES ('Yes'), ('No')) AS v(val)
1275WHERE attribute_name = 'Parking';
1276
1277-- Usage Type (Shops)
1278INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1279SELECT category_attribute_id, v.val
1280FROM CategoryAttributes,
1281(VALUES ('Retail'), ('Restaurant'), ('Office'), ('Warehouse'), ('Mixed')) AS v(val)
1282WHERE attribute_name = 'Usage Type';
1283
1284-- Soil Type
1285INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1286SELECT category_attribute_id, v.val
1287FROM CategoryAttributes,
1288(VALUES ('Clay'), ('Sandy'), ('Loamy'), ('Silty'), ('Peaty')) AS v(val)
1289WHERE attribute_name = 'Soil Type';
1290
1291-- Water Access
1292INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1293SELECT category_attribute_id, v.val
1294FROM CategoryAttributes,
1295(VALUES ('Yes'), ('No')) AS v(val)
1296WHERE attribute_name = 'Water Access';
1297
1298-- Building Permit
1299INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1300SELECT category_attribute_id, v.val
1301FROM CategoryAttributes,
1302(VALUES ('Yes'), ('No'), ('In Progress')) AS v(val)
1303WHERE attribute_name = 'Building Permit';
1304
1305-- Infrastructure
1306INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1307SELECT category_attribute_id, v.val
1308FROM CategoryAttributes,
1309(VALUES ('Full'), ('Partial'), ('None')) AS v(val)
1310WHERE attribute_name = 'Infrastructure';
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332-- Yard Size
1333INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1334SELECT category_attribute_id, v.val
1335FROM CategoryAttributes,
1336(VALUES ('Under 100m²'), ('100-300m²'), ('300-500m²'), ('500-1000m²'), ('1000m²+')) AS v(val)
1337WHERE attribute_name = 'Yard Size';
1338
1339-- Size (останати категории)
1340INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1341SELECT category_attribute_id, v.val
1342FROM CategoryAttributes,
1343(VALUES ('Small'), ('Medium'), ('Large'), ('Extra Large')) AS v(val)
1344WHERE attribute_name = 'Size' AND category_attribute_id IN (228,255,192,202,296,237,339);
1345
1346-- Power (останати)
1347INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1348SELECT category_attribute_id, v.val
1349FROM CategoryAttributes,
1350(VALUES ('500W'), ('1000W'), ('1500W'), ('2000W'), ('2500W'), ('3000W')) AS v(val)
1351WHERE attribute_name = 'Power' AND category_attribute_id IN (241,258,165,212,336);
1352
1353-- Type (Jackets)
1354INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1355SELECT category_attribute_id, v.val
1356FROM CategoryAttributes,
1357(VALUES ('Windbreaker'), ('Puffer'), ('Leather'), ('Denim'), ('Trench'), ('Bomber')) AS v(val)
1358WHERE attribute_name = 'Type' AND category_id = 14;
1359
1360-- Type (Bags)
1361INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1362SELECT category_attribute_id, v.val
1363FROM CategoryAttributes,
1364(VALUES ('Handbag'), ('Backpack'), ('Clutch'), ('Tote'), ('Shoulder Bag'), ('Crossbody')) AS v(val)
1365WHERE attribute_name = 'Type' AND category_id = 19;
1366
1367-- Lens Color (Sunglasses)
1368INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1369SELECT category_attribute_id, v.val
1370FROM CategoryAttributes,
1371(VALUES ('Black'), ('Brown'), ('Gray'), ('Blue'), ('Green'), ('Mirror'), ('Yellow')) AS v(val)
1372WHERE attribute_name = 'Lens Color';
1373
1374-- Strap Material / Case Material (Watches)
1375INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1376SELECT category_attribute_id, v.val
1377FROM CategoryAttributes,
1378(VALUES ('Leather'), ('Metal'), ('Rubber'), ('Fabric'), ('Silicone')) AS v(val)
1379WHERE attribute_name = 'Strap Material';
1380
1381INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1382SELECT category_attribute_id, v.val
1383FROM CategoryAttributes,
1384(VALUES ('Stainless Steel'), ('Aluminum'), ('Plastic'), ('Titanium'), ('Gold Plated')) AS v(val)
1385WHERE attribute_name = 'Case Material';
1386
1387-- Sensor Type
1388INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1389SELECT category_attribute_id, v.val
1390FROM CategoryAttributes,
1391(VALUES ('Motion'), ('Temperature'), ('Humidity'), ('Door/Window'), ('Smoke'), ('CO2')) AS v(val)
1392WHERE attribute_name = 'Sensor Type';
1393
1394-- Color Temperature
1395INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1396SELECT category_attribute_id, v.val
1397FROM CategoryAttributes,
1398(VALUES ('Warm White'), ('Cool White'), ('Daylight'), ('RGB'), ('Tunable')) AS v(val)
1399WHERE attribute_name = 'Color Temperature';
1400
1401-- Power Source
1402INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1403SELECT category_attribute_id, v.val
1404FROM CategoryAttributes,
1405(VALUES ('Electric'), ('Battery'), ('Solar'), ('Manual')) AS v(val)
1406WHERE attribute_name = 'Power Source';
1407
1408-- Type (Camping/Hiking)
1409INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1410SELECT category_attribute_id, v.val
1411FROM CategoryAttributes,
1412(VALUES ('Tent'), ('Sleeping Bag'), ('Backpack'), ('Trekking Poles'), ('Headlamp')) AS v(val)
1413WHERE attribute_name = 'Type' AND category_id = 87;
1414
1415-- Type (Cycling)
1416INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1417SELECT category_attribute_id, v.val
1418FROM CategoryAttributes,
1419(VALUES ('Road Bike'), ('Mountain Bike'), ('City Bike'), ('Electric Bike'), ('BMX')) AS v(val)
1420WHERE attribute_name = 'Type' AND category_id = 88;
1421
1422-- Type (Water Sports)
1423INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1424SELECT category_attribute_id, v.val
1425FROM CategoryAttributes,
1426(VALUES ('Surfboard'), ('Kayak'), ('Wetsuit'), ('Snorkel Set'), ('Life Jacket')) AS v(val)
1427WHERE attribute_name = 'Type' AND category_id = 89;
1428
1429-- Publication Year
1430INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1431SELECT category_attribute_id, y::text
1432FROM CategoryAttributes,
1433generate_series(1950, 2025) AS y
1434WHERE attribute_name = 'Publication Year';
1435
1436-- Author / Publisher
1437INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1438SELECT category_attribute_id, v.val
1439FROM CategoryAttributes,
1440(VALUES ('Other')) AS v(val)
1441WHERE attribute_name IN ('Author', 'Publisher');
1442
1443-- Volume (Books)
1444INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1445SELECT category_attribute_id, v.val
1446FROM CategoryAttributes,
1447(VALUES ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('10+')) AS v(val)
1448WHERE attribute_name = 'Volume';
1449
1450-- Issue Number / Month
1451INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1452SELECT category_attribute_id, v.val
1453FROM CategoryAttributes,
1454(VALUES ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9'), ('10'), ('11'), ('12')) AS v(val)
1455WHERE attribute_name IN ('Issue Number', 'Month');
1456
1457-- Engine Type
1458INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1459SELECT category_attribute_id, v.val
1460FROM CategoryAttributes,
1461(VALUES ('Petrol'), ('Diesel'), ('Electric'), ('Hybrid')) AS v(val)
1462WHERE attribute_name = 'Engine Type';
1463
1464-- Compatibility
1465INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1466SELECT category_attribute_id, v.val
1467FROM CategoryAttributes,
1468(VALUES ('Universal'), ('BMW'), ('Mercedes'), ('Audi'), ('Volkswagen'), ('Toyota'), ('Ford'), ('Honda')) AS v(val)
1469WHERE attribute_name = 'Compatibility';
1470
1471-- Load Capacity
1472INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1473SELECT category_attribute_id, v.val
1474FROM CategoryAttributes,
1475(VALUES ('Under 1t'), ('1-5t'), ('5-10t'), ('10-20t'), ('20t+')) AS v(val)
1476WHERE attribute_name = 'Load Capacity';
1477
1478-- Volume (Car Care)
1479INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1480SELECT category_attribute_id, v.val
1481FROM CategoryAttributes,
1482(VALUES ('100ml'), ('250ml'), ('500ml'), ('1L'), ('2L'), ('5L')) AS v(val)
1483WHERE attribute_name = 'Volume' AND category_id IN (101, 74);
1484
1485-- Battery (Tools)
1486INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1487SELECT category_attribute_id, v.val
1488FROM CategoryAttributes,
1489(VALUES ('Yes'), ('No')) AS v(val)
1490WHERE attribute_name = 'Battery' AND category_id = 73;
1491
1492-- Voltage
1493INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1494SELECT category_attribute_id, v.val
1495FROM CategoryAttributes,
1496(VALUES ('12V'), ('24V'), ('110V'), ('220V'), ('380V')) AS v(val)
1497WHERE attribute_name = 'Voltage';
1498
1499-- Capacity (Storage/Laundry)
1500INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1501SELECT category_attribute_id, v.val
1502FROM CategoryAttributes,
1503(VALUES ('Small'), ('Medium'), ('Large'), ('Extra Large')) AS v(val)
1504WHERE attribute_name = 'Capacity' AND category_attribute_id IN (208, 216);
1505
1506-- Type (Washing Machine)
1507INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1508SELECT category_attribute_id, v.val
1509FROM CategoryAttributes,
1510(VALUES ('Front Load'), ('Top Load')) AS v(val)
1511WHERE attribute_name = 'Type' AND category_id = 49;
1512
1513-- Weather Resistant
1514INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1515SELECT category_attribute_id, v.val
1516FROM CategoryAttributes,
1517(VALUES ('Yes'), ('No')) AS v(val)
1518WHERE attribute_name = 'Weather Resistant';
1519
1520-- Model (Cars)
1521INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1522SELECT category_attribute_id, v.val
1523FROM CategoryAttributes,
1524(VALUES
1525('3 Series'), ('5 Series'), ('X5'), ('C-Class'), ('E-Class'), ('GLE'),
1526('A4'), ('A6'), ('Q5'), ('Golf'), ('Passat'), ('Tiguan'),
1527('Corolla'), ('Camry'), ('RAV4'), ('Focus'), ('Fiesta'), ('Kuga'),
1528('Civic'), ('CR-V'), ('Tucson'), ('Elantra'), ('Other')
1529) AS v(val)
1530WHERE attribute_name = 'Model' AND category_id = 96;
1531
1532-- Resolution (Security Cameras)
1533INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1534SELECT category_attribute_id, v.val
1535FROM CategoryAttributes,
1536(VALUES ('720p'), ('1080p'), ('2K'), ('4K')) AS v(val)
1537WHERE attribute_name = 'Resolution' AND category_id = 79;
1538
1539-- Type (Smart Lighting)
1540INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1541SELECT category_attribute_id, v.val
1542FROM CategoryAttributes,
1543(VALUES ('Bulb'), ('Strip'), ('Spotlight'), ('Panel'), ('Outdoor')) AS v(val)
1544WHERE attribute_name = 'Type' AND category_id = 78;
1545
1546-- Type (Home Automation)
1547INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1548SELECT category_attribute_id, v.val
1549FROM CategoryAttributes,
1550(VALUES ('Hub'), ('Switch'), ('Plug'), ('Thermostat'), ('Remote Control')) AS v(val)
1551WHERE attribute_name = 'Type' AND category_id = 81;
1552
1553-- Type (Cardio)
1554INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1555SELECT category_attribute_id, v.val
1556FROM CategoryAttributes,
1557(VALUES ('Treadmill'), ('Exercise Bike'), ('Rowing Machine'), ('Elliptical'), ('Stepper'), ('Jump Rope')) AS v(val)
1558WHERE attribute_name = 'Type' AND category_id = 83;
1559
1560-- Type (Vacuum Cleaners)
1561INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1562SELECT category_attribute_id, v.val
1563FROM CategoryAttributes,
1564(VALUES ('Upright'), ('Canister'), ('Robot'), ('Handheld'), ('Stick')) AS v(val)
1565WHERE attribute_name = 'Type' AND category_id IN (46, 65);
1566
1567-- Type (Laundry Care)
1568INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1569SELECT category_attribute_id, v.val
1570FROM CategoryAttributes,
1571(VALUES ('Front Load'), ('Top Load'), ('Washer-Dryer Combo')) AS v(val)
1572WHERE attribute_name = 'Type' AND category_id = 66;
1573
1574-- Type (Storage)
1575INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1576SELECT category_attribute_id, v.val
1577FROM CategoryAttributes,
1578(VALUES ('Shelf'), ('Cabinet'), ('Drawer'), ('Box'), ('Rack'), ('Wardrobe')) AS v(val)
1579WHERE attribute_name = 'Type' AND category_id IN (60, 76);
1580
1581-- Type (Lighting)
1582INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1583SELECT category_attribute_id, v.val
1584FROM CategoryAttributes,
1585(VALUES ('Ceiling Light'), ('Floor Lamp'), ('Table Lamp'), ('Wall Light'), ('Pendant')) AS v(val)
1586WHERE attribute_name = 'Type' AND category_id = 61;
1587
1588-- Type (Kitchen)
1589INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1590SELECT category_attribute_id, v.val
1591FROM CategoryAttributes,
1592(VALUES ('Cookware'), ('Cutlery'), ('Bakeware'), ('Storage'), ('Serveware')) AS v(val)
1593WHERE attribute_name = 'Type' AND category_id = 64;
1594
1595-- Type (Cleaning)
1596INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1597SELECT category_attribute_id, v.val
1598FROM CategoryAttributes,
1599(VALUES ('Detergent'), ('Disinfectant'), ('Scrubber'), ('Mop'), ('Brush')) AS v(val)
1600WHERE attribute_name = 'Type' AND category_id = 65;
1601
1602-- Type (Furniture)
1603INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1604SELECT category_attribute_id, v.val
1605FROM CategoryAttributes,
1606(VALUES ('Sofa'), ('Chair'), ('Table'), ('Bed'), ('Wardrobe'), ('Desk'), ('Bookshelf')) AS v(val)
1607WHERE attribute_name = 'Type' AND category_id = 59;
1608
1609-- Type (Electrical & Plumbing)
1610INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1611SELECT category_attribute_id, v.val
1612FROM CategoryAttributes,
1613(VALUES ('Cable'), ('Switch'), ('Socket'), ('Pipe'), ('Valve'), ('Fitting')) AS v(val)
1614WHERE attribute_name = 'Type' AND category_id = 75;
1615
1616-- Type (Tools & Hardware)
1617INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1618SELECT category_attribute_id, v.val
1619FROM CategoryAttributes,
1620(VALUES ('Drill'), ('Saw'), ('Screwdriver'), ('Hammer'), ('Wrench'), ('Sander')) AS v(val)
1621WHERE attribute_name = 'Type' AND category_id = 73;
1622
1623-- Type (Paint)
1624INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1625SELECT category_attribute_id, v.val
1626FROM CategoryAttributes,
1627(VALUES ('Wall Paint'), ('Wood Paint'), ('Metal Paint'), ('Primer'), ('Varnish'), ('Wallpaper')) AS v(val)
1628WHERE attribute_name = 'Type' AND category_id = 74;
1629
1630-- Type (Brake Parts / Suspension)
1631INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1632SELECT category_attribute_id, v.val
1633FROM CategoryAttributes,
1634(VALUES ('OEM'), ('Aftermarket'), ('Performance')) AS v(val)
1635WHERE attribute_name = 'Type' AND category_id IN (103, 104);
1636
1637-- Type (Car Accessories)
1638INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1639SELECT category_attribute_id, v.val
1640FROM CategoryAttributes,
1641(VALUES ('Seat Cover'), ('Floor Mat'), ('Steering Wheel Cover'), ('Car Organizer'), ('Phone Holder')) AS v(val)
1642WHERE attribute_name = 'Type' AND category_id = 100;
1643
1644-- Type (Car Care)
1645INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1646SELECT category_attribute_id, v.val
1647FROM CategoryAttributes,
1648(VALUES ('Car Wash'), ('Polish'), ('Wax'), ('Interior Cleaner'), ('Tire Cleaner')) AS v(val)
1649WHERE attribute_name = 'Type' AND category_id = 101;
1650
1651-- Type (Garden Tools)
1652INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1653SELECT category_attribute_id, v.val
1654FROM CategoryAttributes,
1655(VALUES ('Shovel'), ('Rake'), ('Hoe'), ('Pruner'), ('Lawn Mower'), ('Watering Can')) AS v(val)
1656WHERE attribute_name = 'Type' AND category_id = 68;
1657
1658-- Type (Plants & Pots)
1659INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1660SELECT category_attribute_id, v.val
1661FROM CategoryAttributes,
1662(VALUES ('Indoor Plant'), ('Outdoor Plant'), ('Succulent'), ('Flower Pot'), ('Planter Box'), ('Hanging Pot')) AS v(val)
1663WHERE attribute_name = 'Type' AND category_id = 69;
1664
1665
1666INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1667SELECT category_attribute_id, v.val
1668FROM CategoryAttributes,
1669(VALUES ('Under 30m²'), ('30-50m²'), ('50-80m²'), ('80-120m²'), ('120-200m²'), ('200m²+')) AS v(val)
1670WHERE attribute_name = 'Area (m²)';
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685-- Brand (T-Shirts, Shirts, Jeans, Jackets, Dresses - Fashion облека)
1686INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1687SELECT category_attribute_id, v.val
1688FROM CategoryAttributes,
1689(VALUES ('Nike'),('Adidas'),('Zara'),('H&M'),('Puma'),('Levi''s'),('Calvin Klein'),('Tommy Hilfiger'),('Guess'),('Mango')) AS v(val)
1690WHERE attribute_name = 'Brand' AND category_id IN (12,13,14,15);
1691
1692-- Brand (Boots, Heels)
1693INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1694SELECT category_attribute_id, v.val
1695FROM CategoryAttributes,
1696(VALUES ('Nike'),('Adidas'),('Zara'),('Steve Madden'),('Clarks'),('Timberland'),('Dr. Martens'),('Guess')) AS v(val)
1697WHERE attribute_name = 'Brand' AND category_id IN (17,18);
1698
1699-- Brand (Belts, Hats, Watches, Sunglasses, Bags)
1700INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1701SELECT category_attribute_id, v.val
1702FROM CategoryAttributes,
1703(VALUES ('Guess'),('Michael Kors'),('Calvin Klein'),('Tommy Hilfiger'),('Fossil'),('Casio'),('Zara'),('H&M')) AS v(val)
1704WHERE attribute_name = 'Brand' AND category_id IN (20,21,22,23);
1705
1706-- Brand (Feature Phones)
1707INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1708SELECT category_attribute_id, v.val
1709FROM CategoryAttributes,
1710(VALUES ('Nokia'),('Samsung'),('Alcatel'),('Doro'),('Xiaomi')) AS v(val)
1711WHERE attribute_name = 'Brand' AND category_id = 26;
1712
1713-- Brand (Desktops)
1714INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1715SELECT category_attribute_id, v.val
1716FROM CategoryAttributes,
1717(VALUES ('Dell'),('HP'),('Lenovo'),('Asus'),('Acer'),('Apple'),('MSI')) AS v(val)
1718WHERE attribute_name = 'Brand' AND category_id = 29;
1719
1720-- Brand (Irons)
1721INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1722SELECT category_attribute_id, v.val
1723FROM CategoryAttributes,
1724(VALUES ('Philips'),('Tefal'),('Rowenta'),('Bosch'),('Braun')) AS v(val)
1725WHERE attribute_name = 'Brand' AND category_id = 55;
1726
1727-- Brand (Furniture)
1728INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1729SELECT category_attribute_id, v.val
1730FROM CategoryAttributes,
1731(VALUES ('IKEA'),('Ashley'),('Jysk'),('Kika'),('Vox'),('Tempur')) AS v(val)
1732WHERE attribute_name = 'Brand' AND category_id = 59;
1733
1734-- Brand (Storage & Organization)
1735INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1736SELECT category_attribute_id, v.val
1737FROM CategoryAttributes,
1738(VALUES ('IKEA'),('Jysk'),('Leroy Merlin'),('Generic')) AS v(val)
1739WHERE attribute_name = 'Brand' AND category_id = 60;
1740
1741-- Brand (Lighting)
1742INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1743SELECT category_attribute_id, v.val
1744FROM CategoryAttributes,
1745(VALUES ('Philips'),('IKEA'),('Osram'),('Ledvance'),('Generic')) AS v(val)
1746WHERE attribute_name = 'Brand' AND category_id = 61;
1747
1748-- Brand (Textiles)
1749INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1750SELECT category_attribute_id, v.val
1751FROM CategoryAttributes,
1752(VALUES ('IKEA'),('Jysk'),('H&M Home'),('Zara Home'),('Generic')) AS v(val)
1753WHERE attribute_name = 'Brand' AND category_id = 62;
1754
1755-- Brand (Kitchen & Dining)
1756INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1757SELECT category_attribute_id, v.val
1758FROM CategoryAttributes,
1759(VALUES ('IKEA'),('Tefal'),('WMF'),('Bosch'),('Generic')) AS v(val)
1760WHERE attribute_name = 'Brand' AND category_id = 64;
1761
1762-- Brand (Cleaning)
1763INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1764SELECT category_attribute_id, v.val
1765FROM CategoryAttributes,
1766(VALUES ('Dyson'),('Kärcher'),('Vileda'),('Leifheit'),('Generic')) AS v(val)
1767WHERE attribute_name = 'Brand' AND category_id = 65;
1768
1769-- Brand (Laundry Care)
1770INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1771SELECT category_attribute_id, v.val
1772FROM CategoryAttributes,
1773(VALUES ('Bosch'),('LG'),('Samsung'),('Beko'),('Whirlpool')) AS v(val)
1774WHERE attribute_name = 'Brand' AND category_id = 66;
1775
1776-- Brand (Garden Tools)
1777INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1778SELECT category_attribute_id, v.val
1779FROM CategoryAttributes,
1780(VALUES ('Bosch'),('Black+Decker'),('Husqvarna'),('Stihl'),('Gardena')) AS v(val)
1781WHERE attribute_name = 'Brand' AND category_id = 68;
1782
1783-- Brand (Outdoor Furniture)
1784INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1785SELECT category_attribute_id, v.val
1786FROM CategoryAttributes,
1787(VALUES ('IKEA'),('Jysk'),('Keter'),('Lifetime'),('Generic')) AS v(val)
1788WHERE attribute_name = 'Brand' AND category_id = 70;
1789
1790-- Brand (BBQ)
1791INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1792SELECT category_attribute_id, v.val
1793FROM CategoryAttributes,
1794(VALUES ('Weber'),('Broil King'),('Napoleon'),('Char-Broil'),('Generic')) AS v(val)
1795WHERE attribute_name = 'Brand' AND category_id = 71;
1796
1797-- Brand (Tools & Hardware)
1798INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1799SELECT category_attribute_id, v.val
1800FROM CategoryAttributes,
1801(VALUES ('Bosch'),('Makita'),('DeWalt'),('Black+Decker'),('Stanley')) AS v(val)
1802WHERE attribute_name = 'Brand' AND category_id = 73;
1803
1804-- Brand (Smart Lighting)
1805INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1806SELECT category_attribute_id, v.val
1807FROM CategoryAttributes,
1808(VALUES ('Philips Hue'),('IKEA Tradfri'),('Govee'),('Yeelight'),('Generic')) AS v(val)
1809WHERE attribute_name = 'Brand' AND category_id = 78;
1810
1811-- Brand (Security Cameras)
1812INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1813SELECT category_attribute_id, v.val
1814FROM CategoryAttributes,
1815(VALUES ('Hikvision'),('Dahua'),('Arlo'),('Ring'),('TP-Link')) AS v(val)
1816WHERE attribute_name = 'Brand' AND category_id = 79;
1817
1818-- Brand (Smart Sensors / Home Automation)
1819INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1820SELECT category_attribute_id, v.val
1821FROM CategoryAttributes,
1822(VALUES ('Philips Hue'),('Aqara'),('Sonoff'),('TP-Link'),('Generic')) AS v(val)
1823WHERE attribute_name = 'Brand' AND category_id IN (80,81);
1824
1825-- Brand (Cardio / Strength / Yoga)
1826INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1827SELECT category_attribute_id, v.val
1828FROM CategoryAttributes,
1829(VALUES ('NordicTrack'),('Bowflex'),('Technogym'),('Life Fitness'),('Generic')) AS v(val)
1830WHERE attribute_name = 'Brand' AND category_id IN (83,84,85);
1831
1832-- Brand (Camping, Cycling, Water Sports)
1833INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1834SELECT category_attribute_id, v.val
1835FROM CategoryAttributes,
1836(VALUES ('The North Face'),('Columbia'),('Salomon'),('Decathlon'),('Generic')) AS v(val)
1837WHERE attribute_name = 'Brand' AND category_id IN (87,88,89);
1838
1839-- Brand (Car Electronics, Tires, Car Accessories, Car Care)
1840INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1841SELECT category_attribute_id, v.val
1842FROM CategoryAttributes,
1843(VALUES ('Bosch'),('Continental'),('Michelin'),('Pirelli'),('Generic')) AS v(val)
1844WHERE attribute_name = 'Brand' AND category_id IN (98,99,100,101);
1845
1846-- Brand (Engine, Brake, Suspension)
1847INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1848SELECT category_attribute_id, v.val
1849FROM CategoryAttributes,
1850(VALUES ('Bosch'),('Valeo'),('Denso'),('Continental'),('TRW'),('Brembo')) AS v(val)
1851WHERE attribute_name = 'Brand' AND category_id IN (102,103,104);
1852
1853-- Brand (Trucks)
1854INSERT INTO CategoryAttributeValues (category_attribute_id, allowed_value)
1855SELECT category_attribute_id, v.val
1856FROM CategoryAttributes,
1857(VALUES ('Mercedes-Benz'),('Volvo'),('MAN'),('Scania'),('DAF'),('Iveco')) AS v(val)
1858WHERE attribute_name = 'Brand' AND category_id = 97;
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874SELECT ca.category_attribute_id, ca.category_id, ca.attribute_name
1875FROM CategoryAttributes ca
1876LEFT JOIN CategoryAttributeValues cav
1877 ON cav.category_attribute_id = ca.category_attribute_id
1878WHERE cav.category_attribute_id IS NULL;
1879
1880
1881
1882
1883
1884--CENI
1885
1886CREATE TABLE CategoryPriceRange (
1887 id SERIAL PRIMARY KEY,
1888 category_id INT NOT NULL UNIQUE,
1889 min_price DECIMAL(10,2) NOT NULL,
1890 max_price DECIMAL(10,2) NOT NULL,
1891 currency VARCHAR(3) NOT NULL DEFAULT 'EUR',
1892 CONSTRAINT fk_pricerange_category FOREIGN KEY (category_id)
1893 REFERENCES Category(category_id) ON DELETE CASCADE ON UPDATE CASCADE
1894);
1895
1896
1897
1898INSERT INTO CategoryPriceRange (category_id, min_price, max_price, currency) VALUES
1899-- Fashion
1900(11, 5, 50, 'EUR'), -- T-Shirts
1901(12, 10, 80, 'EUR'), -- Shirts
1902(13, 15, 100, 'EUR'), -- Jeans
1903(14, 20, 200, 'EUR'), -- Jackets
1904(15, 10, 150, 'EUR'), -- Dresses
1905(16, 20, 150, 'EUR'), -- Sneakers
1906(17, 30, 200, 'EUR'), -- Boots
1907(18, 20, 150, 'EUR'), -- Heels
1908(19, 15, 300, 'EUR'), -- Bags
1909(20, 5, 80, 'EUR'), -- Belts
1910(21, 5, 60, 'EUR'), -- Hats
1911(22, 20, 500, 'EUR'), -- Watches
1912(23, 10, 300, 'EUR'), -- Sunglasses
1913-- Electronics
1914(25, 100, 1500, 'EUR'), -- Smartphones
1915(26, 10, 80, 'EUR'), -- Feature Phones
1916(28, 300, 3000, 'EUR'), -- Laptops
1917(29, 200, 2500, 'EUR'), -- Desktops
1918(32, 150, 3000, 'EUR'), -- Televisions
1919(33, 20, 500, 'EUR'), -- Speakers
1920(34, 15, 400, 'EUR'), -- Headphones
1921(36, 150, 600, 'EUR'), -- Consoles
1922(37, 5, 80, 'EUR'), -- Games
1923(41, 200, 1500, 'EUR'), -- Refrigerators
1924(42, 100, 1200, 'EUR'), -- Ovens
1925(44, 30, 800, 'EUR'), -- Coffee Machines
1926(46, 30, 800, 'EUR'), -- Vacuum Cleaners
1927(49, 200, 1200, 'EUR'), -- Washing Machines
1928(52, 200, 1500, 'EUR'), -- Air Conditioners
1929(55, 15, 150, 'EUR'), -- Irons
1930(47, 20, 200, 'EUR'), -- Steam Cleaners
1931(50, 150, 800, 'EUR'), -- Dryers
1932(53, 30, 300, 'EUR'), -- Heaters
1933(56, 10, 100, 'EUR'), -- Kettles
1934(57, 10, 80, 'EUR'), -- Fans
1935-- Home & Garden
1936(59, 50, 2000, 'EUR'), -- Furniture & Seating
1937(60, 10, 300, 'EUR'), -- Storage & Organization
1938(61, 10, 500, 'EUR'), -- Lighting & Ambience
1939(62, 5, 200, 'EUR'), -- Textiles & Comfort
1940(64, 5, 300, 'EUR'), -- Kitchen & Dining
1941(65, 3, 100, 'EUR'), -- Cleaning & Maintenance
1942(66, 5, 50, 'EUR'), -- Laundry Care
1943(68, 10, 500, 'EUR'), -- Garden Tools
1944(69, 2, 100, 'EUR'), -- Plants & Pots
1945(70, 50, 2000, 'EUR'), -- Outdoor Furniture
1946(71, 50, 1500, 'EUR'), -- BBQ & Cooking
1947(73, 10, 800, 'EUR'), -- Tools & Hardware
1948(74, 5, 100, 'EUR'), -- Paint & Decor Materials
1949(75, 5, 200, 'EUR'), -- Electrical & Plumbing
1950(76, 10, 300, 'EUR'), -- Storage Installation
1951(78, 10, 200, 'EUR'), -- Smart Lighting
1952(79, 20, 500, 'EUR'), -- Security Cameras
1953(80, 10, 150, 'EUR'), -- Smart Sensors
1954(81, 15, 300, 'EUR'), -- Home Automation Devices
1955-- Sports & Outdoors
1956(83, 50, 3000, 'EUR'), -- Cardio Equipment
1957(84, 5, 500, 'EUR'), -- Strength Training
1958(85, 5, 100, 'EUR'), -- Yoga & Pilates
1959(87, 20, 500, 'EUR'), -- Camping & Hiking
1960(88, 50, 3000, 'EUR'), -- Cycling
1961(89, 10, 500, 'EUR'), -- Water Sports
1962-- Books And More
1963(90, 1, 50, 'EUR'), -- Books
1964(91, 1, 30, 'EUR'), -- Catalogs
1965(92, 1, 20, 'EUR'), -- Comics
1966(93, 1, 15, 'EUR'), -- Magazines
1967-- Automotive
1968(95, 500, 15000, 'EUR'), -- Motorcycles
1969(96, 1000, 50000, 'EUR'),-- Cars
1970(97, 5000, 80000, 'EUR'),-- Trucks
1971(98, 10, 500, 'EUR'), -- Car Electronics
1972(99, 20, 400, 'EUR'), -- Tires & Wheels
1973(100, 5, 200, 'EUR'), -- Car Accessories
1974(101, 3, 100, 'EUR'), -- Car Care
1975(102, 10, 500, 'EUR'), -- Engine Parts
1976(103, 10, 300, 'EUR'), -- Brake Parts
1977(104, 20, 400, 'EUR'), -- Suspension
1978-- Real Estate
1979(106, 30000, 200000, 'EUR'), -- Apartments
1980(107, 50000, 500000, 'EUR'), -- Houses
1981(109, 20000, 300000, 'EUR'), -- Offices
1982(110, 10000, 200000, 'EUR'), -- Shops
1983(112, 5000, 100000, 'EUR'), -- Agricultural Land
1984(113, 10000, 200000, 'EUR'); -- Construction Land
1985
1986
1987
1988
1989--PRODUCTS
1990
1991truncate table product CASCADE
1992ALTER SEQUENCE product_product_id_seq RESTART WITH 1;
1993
1994
1995ALTER TABLE product
1996ALTER COLUMN is_active DROP DEFAULT;
1997
1998
1999ALTER TABLE product
2000ALTER COLUMN is_active TYPE int2
2001USING CASE
2002 WHEN is_active THEN 1
2003 ELSE 0
2004END;
2005
2006
2007ALTER TABLE product
2008ALTER COLUMN is_active SET DEFAULT 1;
2009
2010
2011ALTER TABLE product
2012ADD CONSTRAINT chk_is_active
2013CHECK (is_active IN (0,1));
2014
2015
2016
2017
2018
2019INSERT INTO product (title, description, price, currency, category_id, seller_id, created_at, is_active, quantity)
2020WITH
2021leaf_cats AS (
2022 SELECT category_id, name, row_number() OVER (ORDER BY category_id) AS rn, COUNT(*) OVER () AS total
2023 FROM category
2024 WHERE category_id NOT IN (
2025 SELECT DISTINCT parent_category FROM category WHERE parent_category IS NOT NULL
2026 )
2027),
2028verified_users AS (
2029 SELECT user_id, row_number() OVER (ORDER BY user_id) AS rn, COUNT(*) OVER () AS total
2030 FROM appuser
2031 WHERE is_verified = 1
2032)
2033SELECT
2034 lc.name || ' - ' || left(md5(gs.i::text), 8) AS title,
2035 'Quality ' || lc.name || ' product. ' AS description,
2036 round((cpr.min_price + random() * (cpr.max_price - cpr.min_price))::numeric, 2) AS price,
2037 'EUR' AS currency,
2038 lc.category_id,
2039 vu.user_id AS seller_id,
2040 NOW() - (random() * INTERVAL '2 years') AS created_at,
2041 CASE WHEN random() < 0.7 THEN 1 ELSE 0 END AS is_active,
2042 floor(random() * 30 + 1)::int AS quantity
2043FROM generate_series(1, 20) AS gs(i)
2044JOIN leaf_cats lc ON lc.rn = (gs.i % lc.total) + 1
2045JOIN verified_users vu ON vu.rn = ((gs.i * 7) % vu.total) + 1
2046JOIN categorypricerange cpr ON cpr.category_id = lc.category_id;
2047
2048
2049select count(*)
2050from product p
2051
2052select max(product_id)
2053from product p
2054
2055select product_id
2056from product p
2057order by product_id
2058
2059
2060ALTER SEQUENCE product_product_id_seq RESTART WITH 2685996;
2061
2062
2063
2064SELECT MIN(product_id), MAX(product_id), COUNT(*)
2065FROM Product;
2066
2067
2068SELECT is_active, COUNT(*) AS total
2069FROM product
2070GROUP BY is_active;
2071
2072SELECT COUNT(*) AS total
2073FROM product
2074where is_active = 1 and quantity >0;
2075
2076
2077
2078UPDATE product
2079SET quantity = 0
2080WHERE is_active = 0;
2081
2082
2083
2084--PRODUCT ATTRIBUTES
2085
2086SELECT column_name, data_type
2087FROM information_schema.columns
2088WHERE table_name = 'productattributes';
2089
2090
2091
2092TRUNCATE TABLE productattributes;
2093ALTER SEQUENCE productattributes_attribute_id_seq RESTART WITH 1;
2094
2095
2096SELECT pid, state, query, wait_event_type, wait_event
2097FROM pg_stat_activity
2098WHERE state = 'active'
2099AND pid <> pg_backend_pid();
2100
2101
2102
2103INSERT INTO productattributes (product_id, category_attribute_id, attribute_value)
2104SELECT
2105 p.product_id,
2106 ca.category_attribute_id,
2107 CASE
2108 WHEN ca.attribute_name = 'Location' THEN
2109 round((41.5 + random() * 1.0)::numeric, 6)::text || ', ' ||
2110 round((20.5 + random() * 2.5)::numeric, 6)::text
2111 ELSE cav.allowed_value
2112 END AS attribute_value
2113FROM product p
2114JOIN categoryattributes ca ON ca.category_id = p.category_id
2115JOIN LATERAL (
2116 SELECT allowed_value
2117 FROM categoryattributevalues
2118 WHERE category_attribute_id = ca.category_attribute_id
2119 ORDER BY md5(p.product_id::text || ca.category_attribute_id::text || allowed_value)
2120 LIMIT 1
2121) cav ON ca.attribute_name != 'Location'
2122WHERE p.product_id > 2000000;
2123
2124
2125SELECT COUNT(*) FROM productattributes;
2126SELECT MAX(product_id) FROM productattributes;
2127
2128SELECT MAX(product_id) FROM product;
2129
2130
2131
2132SELECT indexname FROM pg_indexes WHERE tablename = 'categoryattributevalues';
2133
2134
2135
2136--Products stavame location
2137
2138ALTER TABLE product ADD COLUMN location VARCHAR(255);
2139
2140UPDATE product
2141SET location = (ARRAY[
2142 -- Macedonia
2143 'Skopje','Bitola','Kumanovo','Prilep','Tetovo','Ohrid','Veles','Shtip','Strumica','Gostivar',
2144 'Kicevo','Struga','Radovis','Kavadarci','Kocani','Debar','Gevgelija','Resen','Berovo','Delcevo',
2145 -- Serbia
2146 'Belgrade','Novi Sad','Nis','Kragujevac','Subotica','Zrenjanin','Pancevo','Cacak','Leskovac','Uzice',
2147 -- Croatia
2148 'Zagreb','Split','Rijeka','Osijek','Zadar','Pula','Slavonski Brod','Karlovac','Sisak','Varazdin',
2149 -- Bosnia
2150 'Sarajevo','Banja Luka','Tuzla','Mostar','Zenica','Prijedor','Bijeljina','Trebinje',
2151 -- Slovenia
2152 'Ljubljana','Maribor','Celje','Kranj','Koper','Novo Mesto','Velenje','Nova Gorica',
2153 -- Bulgaria
2154 'Sofia','Plovdiv','Varna','Burgas','Ruse','Stara Zagora','Pleven','Sliven','Dobrich','Shumen',
2155 -- Albania
2156 'Tirana','Durres','Shkoder','Vlore','Elbasan','Korce','Fier','Berat',
2157 -- Greece
2158 'Athens','Thessaloniki','Patras','Heraklion','Larissa','Volos','Ioannina','Rhodes','Kavala',
2159 -- Turkey
2160 'Istanbul','Ankara','Izmir','Bursa','Antalya','Adana','Konya','Gaziantep','Kayseri','Mersin',
2161 -- Germany
2162 'Berlin','Munich','Hamburg','Frankfurt','Cologne','Stuttgart','Dusseldorf','Leipzig','Dresden','Hannover',
2163 'Nuremberg','Bremen','Dortmund','Essen','Duisburg','Bochum','Wuppertal','Bonn','Mannheim','Karlsruhe',
2164 -- Austria
2165 'Vienna','Graz','Linz','Salzburg','Innsbruck','Klagenfurt','Villach','Wels','St. Polten','Dornbirn',
2166 -- Switzerland
2167 'Zurich','Geneva','Basel','Bern','Lausanne','Winterthur','Lucerne','St. Gallen','Lugano','Biel',
2168 -- United Kingdom
2169 'London','Manchester','Birmingham','Glasgow','Liverpool','Edinburgh','Bristol','Leeds','Sheffield','Newcastle',
2170 'Nottingham','Leicester','Coventry','Bradford','Cardiff','Belfast','Southampton','Portsmouth','Oxford','Cambridge',
2171 -- France
2172 'Paris','Lyon','Marseille','Toulouse','Nice','Nantes','Strasbourg','Montpellier','Bordeaux','Lille',
2173 'Rennes','Reims','Saint-Etienne','Toulon','Grenoble','Dijon','Angers','Nimes','Villeurbanne','Saint-Denis',
2174 -- Italy
2175 'Rome','Milan','Naples','Turin','Palermo','Genoa','Bologna','Florence','Bari','Catania',
2176 'Venice','Verona','Messina','Padua','Trieste','Brescia','Taranto','Prato','Reggio Calabria','Modena',
2177 -- Spain
2178 'Madrid','Barcelona','Valencia','Seville','Zaragoza','Malaga','Murcia','Palma','Las Palmas','Bilbao',
2179 'Alicante','Cordoba','Valladolid','Vigo','Gijon','Hospitalet','Granada','Vitoria','Elche','Oviedo',
2180 -- Portugal
2181 'Lisbon','Porto','Braga','Coimbra','Funchal','Setubal','Aveiro','Faro','Evora','Leiria',
2182 -- Netherlands
2183 'Amsterdam','Rotterdam','The Hague','Utrecht','Eindhoven','Tilburg','Groningen','Almere','Breda','Nijmegen',
2184 -- Belgium
2185 'Brussels','Antwerp','Ghent','Charleroi','Liege','Bruges','Namur','Leuven','Mons','Mechelen',
2186 -- Poland
2187 'Warsaw','Krakow','Lodz','Wroclaw','Poznan','Gdansk','Szczecin','Bydgoszcz','Lublin','Katowice',
2188 -- Czech Republic
2189 'Prague','Brno','Ostrava','Plzen','Liberec','Olomouc','Usti nad Labem','Ceske Budejovice','Pardubice','Hradec Kralove',
2190 -- Hungary
2191 'Budapest','Debrecen','Miskolc','Pecs','Gyor','Szeged','Nyiregyhaza','Kecskemet','Szekesfehervar','Szombathely',
2192 -- Romania
2193 'Bucharest','Cluj-Napoca','Timisoara','Iasi','Constanta','Craiova','Brasov','Galati','Ploiesti','Oradea',
2194 -- Slovakia
2195 'Bratislava','Kosice','Presov','Zilina','Banska Bystrica','Nitra','Trnava','Martin','Trencin','Poprad',
2196 -- Denmark
2197 'Copenhagen','Aarhus','Odense','Aalborg','Esbjerg','Randers','Kolding','Horsens','Vejle','Roskilde',
2198 -- Sweden
2199 'Stockholm','Gothenburg','Malmo','Uppsala','Vasteras','Orebro','Linkoping','Helsingborg','Jonkoping','Norrkoping',
2200 -- Norway
2201 'Oslo','Bergen','Trondheim','Stavanger','Drammen','Fredrikstad','Kristiansand','Sandnes','Tromso','Sarpsborg',
2202 -- Finland
2203 'Helsinki','Espoo','Tampere','Vantaa','Oulu','Turku','Jyvaskyla','Lahti','Kuopio','Kouvola',
2204 -- Russia
2205 'Moscow','Saint Petersburg','Novosibirsk','Yekaterinburg','Kazan','Nizhny Novgorod','Chelyabinsk','Samara','Omsk','Rostov-on-Don',
2206 -- Ukraine
2207 'Kyiv','Kharkiv','Odessa','Dnipro','Donetsk','Zaporizhzhia','Lviv','Kryvyi Rih','Mykolaiv','Mariupol',
2208 -- Moldova
2209 'Chisinau','Tiraspol','Balti','Bender','Ribnita',
2210 -- Belarus
2211 'Minsk','Gomel','Mogilev','Vitebsk','Grodno','Brest',
2212 -- Lithuania
2213 'Vilnius','Kaunas','Klaipeda','Siauliai','Panevezys',
2214 -- Latvia
2215 'Riga','Daugavpils','Liepaja','Jelgava','Jurmala',
2216 -- Estonia
2217 'Tallinn','Tartu','Narva','Parnu','Kohtla-Jarve',
2218 -- Montenegro
2219 'Podgorica','Niksic','Herceg Novi','Bar','Budva',
2220 -- Kosovo
2221 'Pristina','Prizren','Peja','Mitrovica','Gjilan',
2222 -- North Macedonia already covered above
2223 -- Ireland
2224 'Dublin','Cork','Limerick','Galway','Waterford',
2225 -- Iceland
2226 'Reykjavik','Kopavogur','Hafnarfjordur','Akureyri',
2227 -- Luxembourg
2228 'Luxembourg City','Esch-sur-Alzette','Differdange','Dudelange',
2229 -- Malta
2230 'Valletta','Birkirkara','Mosta','Qormi','Naxxar',
2231 -- Cyprus
2232 'Nicosia','Limassol','Larnaca','Famagusta','Paphos'
2233])[floor(random() * 330 + 1)::int];
2234
2235
2236--SAVED SEARCHES
2237
2238truncate table savedsearches cascade;
2239ALTER SEQUENCE savedsearches_search_id_seq RESTART WITH 1;
2240
2241
2242ALTER TABLE savedsearches
2243DROP COLUMN filters;
2244
2245
2246
2247
2248INSERT INTO savedsearches (user_id, category_id, min_price, max_price, location)
2249WITH
2250active_users AS (
2251 SELECT user_id, row_number() OVER (ORDER BY user_id) AS rn
2252 FROM appuser
2253 WHERE is_active = 1
2254),
2255user_count AS (SELECT COUNT(*) AS total FROM appuser WHERE is_active = 1),
2256leaf_cats AS (
2257 SELECT category_id, row_number() OVER (ORDER BY category_id) AS rn
2258 FROM category
2259 WHERE category_id NOT IN (
2260 SELECT DISTINCT parent_category FROM category WHERE parent_category IS NOT NULL
2261 )
2262),
2263cat_count AS (
2264 SELECT COUNT(*) AS total FROM category
2265 WHERE category_id NOT IN (
2266 SELECT DISTINCT parent_category FROM category WHERE parent_category IS NOT NULL
2267 )
2268)
2269SELECT
2270 au.user_id,
2271 lc.category_id,
2272 cpr.min_price + floor(random() * (cpr.max_price - cpr.min_price) * 0.4)::int AS min_price,
2273 cpr.min_price + floor(random() * (cpr.max_price - cpr.min_price) * 0.6 + (cpr.max_price - cpr.min_price) * 0.4)::int AS max_price,
2274 (ARRAY[
2275 'Skopje','Bitola','Kumanovo','Prilep','Tetovo','Ohrid','Veles','Shtip','Strumica','Gostivar',
2276 'Belgrade','Novi Sad','Nis','Kragujevac','Subotica',
2277 'Zagreb','Split','Rijeka','Osijek','Zadar',
2278 'Sarajevo','Banja Luka','Tuzla','Mostar',
2279 'Ljubljana','Maribor','Celje',
2280 'Sofia','Plovdiv','Varna','Burgas',
2281 'Tirana','Durres','Shkoder',
2282 'Athens','Thessaloniki','Patras',
2283 'Istanbul','Ankara','Izmir',
2284 'Berlin','Munich','Hamburg','Frankfurt','Cologne',
2285 'Vienna','Graz','Linz','Salzburg',
2286 'Zurich','Geneva','Basel','Bern',
2287 'London','Manchester','Birmingham','Glasgow','Liverpool',
2288 'Paris','Lyon','Marseille','Toulouse','Nice',
2289 'Rome','Milan','Naples','Turin','Florence',
2290 'Madrid','Barcelona','Valencia','Seville',
2291 'Lisbon','Porto','Braga',
2292 'Amsterdam','Rotterdam','Utrecht',
2293 'Brussels','Antwerp','Ghent',
2294 'Warsaw','Krakow','Wroclaw','Gdansk',
2295 'Prague','Brno','Ostrava',
2296 'Budapest','Debrecen','Miskolc',
2297 'Bucharest','Cluj-Napoca','Timisoara',
2298 'Bratislava','Kosice',
2299 'Copenhagen','Aarhus',
2300 'Stockholm','Gothenburg','Malmo',
2301 'Oslo','Bergen','Trondheim',
2302 'Helsinki','Tampere','Turku',
2303 'Moscow','Saint Petersburg',
2304 'Kyiv','Kharkiv','Lviv',
2305 'Vilnius','Riga','Tallinn',
2306 'Dublin','Cork',
2307 'Podgorica','Pristina',
2308 'Nicosia','Limassol'
2309 ])[floor(random() * 100 + 1)::int] AS location
2310FROM generate_series(300001, 500000) AS gs(i)
2311CROSS JOIN user_count uc
2312CROSS JOIN cat_count cc
2313JOIN active_users au ON au.rn = (gs.i % uc.total) + 1
2314JOIN leaf_cats lc ON lc.rn = ((gs.i * 13) % cc.total) + 1
2315JOIN categorypricerange cpr ON cpr.category_id = lc.category_id;
2316
2317
2318SELECT COUNT(*) FROM savedsearches;
2319
2320
2321
2322
2323SELECT pid, state, query
2324FROM pg_stat_activity
2325WHERE state = 'active'
2326AND pid <> pg_backend_pid();
2327
2328
2329
2330--SAVED SEARCHES ATTRIBUTES
2331truncate table savedsearchesattributes cascade;
2332ALTER SEQUENCE savedsearchesattributes_saved_search_attribute_id_seq RESTART WITH 1;
2333
2334
2335
2336INSERT INTO savedsearchesattributes (saved_search_id, category_attribute_id, attribute_value)
2337WITH
2338search_attrs AS (
2339 SELECT
2340 ss.search_id,
2341 ss.category_id,
2342 ca.category_attribute_id,
2343 ca.attribute_name,
2344 row_number() OVER (PARTITION BY ss.search_id ORDER BY md5(ss.search_id::text || ca.category_attribute_id::text)) AS attr_rank,
2345 (ss.search_id % 3) + 1 AS num_attrs
2346 FROM savedsearches ss
2347 JOIN categoryattributes ca ON ca.category_id = ss.category_id
2348 WHERE ca.attribute_name != 'Location' AND ss.search_id > 100000
2349)
2350SELECT
2351 sa.search_id,
2352 sa.category_attribute_id,
2353 (
2354 SELECT cav.allowed_value
2355 FROM categoryattributevalues cav
2356 WHERE cav.category_attribute_id = sa.category_attribute_id
2357 ORDER BY md5(sa.search_id::text || sa.category_attribute_id::text || cav.allowed_value)
2358 LIMIT 1
2359 ) AS attribute_value
2360FROM search_attrs sa
2361WHERE sa.attr_rank <= sa.num_attrs;
2362
2363
2364
2365SELECT MAX(saved_search_id) FROM savedsearchesattributes s;
2366
2367
2368
2369--PRODUCT IMAGES
2370
2371
2372truncate table productimages cascade;
2373ALTER SEQUENCE productimages_image_id_seq RESTART WITH 1;
2374
2375INSERT INTO productimages (product_id, image_url)
2376WITH img_counts AS (
2377 SELECT
2378 product_id,
2379 (product_id % 4) + 2 AS num_images
2380 FROM product
2381 WHERE product_id >1500000
2382)
2383SELECT
2384 ic.product_id,
2385 'https://images.marketnet.com/products/' || ic.product_id || '/' || gs.n || '_' || left(md5(ic.product_id::text || gs.n::text), 8) || '.jpg' AS image_url
2386FROM img_counts ic
2387CROSS JOIN generate_series(1, 5) AS gs(n)
2388WHERE gs.n <= ic.num_images;
2389
2390
2391select count(*) from productimages p
2392
2393
2394
2395--PRODUT VIEWS
2396
2397TRUNCATE TABLE productviews;
2398ALTER SEQUENCE productviews_view_id_seq RESTART WITH 1;
2399
2400
2401TRUNCATE TABLE productviews;
2402ALTER SEQUENCE productviews_view_id_seq RESTART WITH 1;
2403
2404
2405
2406
2407INSERT INTO productviews (user_id, product_id, viewed_at)
2408WITH
2409all_users AS (
2410 SELECT user_id, row_number() OVER (ORDER BY user_id) AS rn
2411 FROM appuser
2412),
2413user_count AS (SELECT COUNT(*) AS total FROM appuser),
2414all_products AS (
2415 SELECT product_id, row_number() OVER (ORDER BY product_id) AS rn
2416 FROM product WHERE is_active = 1
2417),
2418product_count AS (SELECT COUNT(*) AS total FROM product WHERE is_active = 1)
2419SELECT
2420 au.user_id,
2421 ap.product_id,
2422 NOW() - (random() * INTERVAL '1 year') AS viewed_at
2423FROM generate_series(1, 1000000) AS gs(i)
2424CROSS JOIN user_count uc
2425CROSS JOIN product_count pc
2426JOIN all_users au ON au.rn = (gs.i % 50000) + 1
2427JOIN all_products ap ON ap.rn = (gs.i % 100000) + 1;
2428
2429
2430
2431select count(*) from productviews p2
2432select count(distinct user_id) from productviews p
2433
2434
2435select count(*) from favorites f
2436select count(distinct product_id) from favorites f2
2437
2438
2439select count(*) from orderitems o
2440select count(distinct product_id) from orderitems o2
2441
2442
2443
2444--PRODUCT STATS
2445
2446
2447
2448truncate table productstats
2449
2450
2451
2452INSERT INTO productstats (product_id, views_count, favorites_count, sells_count)
2453SELECT
2454 p.product_id,
2455 COALESCE(v.views_count, 0) AS views_count,
2456 COALESCE(f.favorites_count, 0) AS favorites_count,
2457 COALESCE(s.sells_count, 0) AS sells_count
2458FROM product p
2459LEFT JOIN (
2460 SELECT product_id, COUNT(*) AS views_count
2461 FROM productviews
2462 GROUP BY product_id
2463) v ON v.product_id = p.product_id
2464LEFT JOIN (
2465 SELECT product_id, COUNT(*) AS favorites_count
2466 FROM favorites
2467 GROUP BY product_id
2468) f ON f.product_id = p.product_id
2469LEFT JOIN (
2470 SELECT product_id, SUM(quantity) AS sells_count
2471 FROM orderitems
2472 GROUP BY product_id
2473) s ON s.product_id = p.product_id;
2474
2475
2476
2477select count(distinct product_id) from productviews p2
2478
2479select count(*)
2480from productstats p
2481where sells_count > 5
2482
2483
2484--NOTIFICATIONS
2485
2486
2487ALTER TABLE notifications
2488 ALTER COLUMN favorite_id DROP NOT NULL,
2489 ALTER COLUMN saved_search_id DROP NOT NULL,
2490 ALTER COLUMN order_id DROP NOT NULL,
2491 ALTER COLUMN message_id SET DEFAULT NULL;
2492
2493ALTER TABLE notifications
2494 ADD CONSTRAINT fk_notifications_message
2495 FOREIGN KEY (message_id) REFERENCES public.message(message_id) ON DELETE CASCADE ON UPDATE CASCADE;
2496
2497
2498
2499
2500
2501SELECT COUNT(*) FROM favorites;
2502SELECT COUNT(*) FROM savedsearches;
2503SELECT COUNT(*) FROM "order";
2504SELECT COUNT(*) FROM message;
2505
2506
2507
2508
2509TRUNCATE TABLE notifications;
2510ALTER SEQUENCE notifications_notification_id_seq RESTART WITH 1;
2511
2512
2513
2514INSERT INTO notifications (user_id, type, title, message, favorite_id, saved_search_id, message_id, order_id)
2515WITH
2516notif_types AS (
2517 SELECT * FROM (VALUES
2518 ('PRICE_CHANGE'),
2519 ('NEW_PRODUCT_MATCH'),
2520 ('ORDER_STATUS_CHANGE'),
2521 ('NEW_MESSAGE')
2522 ) AS t(type)
2523),
2524all_favorites AS (
2525 SELECT favorite_id, user_id, row_number() OVER (ORDER BY favorite_id) AS rn
2526 FROM favorites
2527),
2528fav_count AS (SELECT COUNT(*) AS total FROM favorites),
2529all_searches AS (
2530 SELECT search_id, user_id, row_number() OVER (ORDER BY search_id) AS rn
2531 FROM savedsearches
2532),
2533search_count AS (SELECT COUNT(*) AS total FROM savedsearches),
2534all_orders AS (
2535 SELECT o.order_id, o.buyer_id AS user_id, row_number() OVER (ORDER BY o.order_id) AS rn
2536 FROM "order" o
2537),
2538order_count AS (SELECT COUNT(*) AS total FROM "order"),
2539all_messages AS (
2540 SELECT m.message_id, c.buyer_id AS user_id, row_number() OVER (ORDER BY m.message_id) AS rn
2541 FROM message m
2542 JOIN conversation c ON c.conversation_id = m.conversation_id
2543),
2544msg_count AS (SELECT COUNT(*) AS total FROM message)
2545SELECT
2546 CASE (gs.i % 4)
2547 WHEN 0 THEN f.user_id
2548 WHEN 1 THEN ss.user_id
2549 WHEN 2 THEN o.user_id
2550 ELSE m.user_id
2551 END AS user_id,
2552 CASE (gs.i % 4)
2553 WHEN 0 THEN 'PRICE_CHANGE'
2554 WHEN 1 THEN 'NEW_PRODUCT_MATCH'
2555 WHEN 2 THEN 'ORDER_STATUS_CHANGE'
2556 ELSE 'NEW_MESSAGE'
2557 END AS type,
2558 CASE (gs.i % 4)
2559 WHEN 0 THEN 'Price Change Alert'
2560 WHEN 1 THEN 'New Product Match'
2561 WHEN 2 THEN 'Order Status Update'
2562 ELSE 'New Message'
2563 END AS title,
2564 CASE (gs.i % 4)
2565 WHEN 0 THEN 'The price of a product in your favorites has changed.'
2566 WHEN 1 THEN 'A new product matching your saved search is available.'
2567 WHEN 2 THEN 'Your order status has been updated.'
2568 ELSE 'You have received a new message.'
2569 END AS message,
2570 CASE WHEN gs.i % 4 = 0 THEN f.favorite_id ELSE NULL END AS favorite_id,
2571 CASE WHEN gs.i % 4 = 1 THEN ss.search_id ELSE NULL END AS saved_search_id,
2572 CASE WHEN gs.i % 4 = 3 THEN m.message_id ELSE NULL END AS message_id,
2573 CASE WHEN gs.i % 4 = 2 THEN o.order_id ELSE NULL END AS order_id
2574FROM generate_series(1, 3000000) AS gs(i)
2575CROSS JOIN fav_count fc
2576CROSS JOIN search_count sc
2577CROSS JOIN order_count oc
2578CROSS JOIN msg_count mc
2579JOIN all_favorites f ON f.rn = (gs.i % fc.total) + 1
2580JOIN all_searches ss ON ss.rn = ((gs.i * 3) % sc.total) + 1
2581JOIN all_orders o ON o.rn = ((gs.i * 7) % oc.total) + 1
2582JOIN all_messages m ON m.rn = ((gs.i * 11) % mc.total) + 1;
2583
2584
2585select count(*) from notifications n ;
2586
2587
2588select count(*)
2589from product p, appuser a
2590where p.seller_id = a.user_id and a.is_active = 0
2591
2592
2593select *
2594from cartitems c
2595where c.cart_id = 2;
2596
2597
2598
2599
2600---------------------------------------------------------------------------------------------------------------------------------------
2601
2602
2603
2604-- PACKAGE
2605ALTER TABLE public.package
2606ADD CONSTRAINT package_price_check
2607CHECK (
2608 (name = 'BRONZE' AND duration_days = 30 AND price = 2.00) OR
2609 (name = 'BRONZE' AND duration_days = 60 AND price = 3.80) OR
2610 (name = 'BRONZE' AND duration_days = 90 AND price = 5.40) OR
2611 (name = 'BRONZE' AND duration_days = 180 AND price = 9.80) OR
2612 (name = 'BRONZE' AND duration_days = 365 AND price = 18.00) OR
2613 (name = 'SILVER' AND duration_days = 30 AND price = 5.00) OR
2614 (name = 'SILVER' AND duration_days = 60 AND price = 9.50) OR
2615 (name = 'SILVER' AND duration_days = 90 AND price = 13.50) OR
2616 (name = 'SILVER' AND duration_days = 180 AND price = 24.50) OR
2617 (name = 'SILVER' AND duration_days = 365 AND price = 45.00) OR
2618 (name = 'GOLD' AND duration_days = 30 AND price = 10.00) OR
2619 (name = 'GOLD' AND duration_days = 60 AND price = 19.00) OR
2620 (name = 'GOLD' AND duration_days = 90 AND price = 27.00) OR
2621 (name = 'GOLD' AND duration_days = 180 AND price = 49.00) OR
2622 (name = 'GOLD' AND duration_days = 365 AND price = 90.00)
2623);
2624
2625
2626TRUNCATE TABLE public.package RESTART IDENTITY;
2627
2628INSERT INTO public.package (name, description, currency, price, visibility_level, duration_days)
2629VALUES
2630 ('BRONZE', 'Bronze package - 30 days', 'EUR', 2.00, 'BASIC', 30),
2631 ('BRONZE', 'Bronze package - 60 days', 'EUR', 3.80, 'BASIC', 60),
2632 ('BRONZE', 'Bronze package - 90 days', 'EUR', 5.40, 'BASIC', 90),
2633 ('BRONZE', 'Bronze package - 180 days', 'EUR', 9.80, 'BASIC', 180),
2634 ('BRONZE', 'Bronze package - 365 days', 'EUR', 18.00, 'BASIC', 365),
2635 ('SILVER', 'Silver package - 30 days', 'EUR', 5.00, 'STANDARD', 30),
2636 ('SILVER', 'Silver package - 60 days', 'EUR', 9.50, 'STANDARD', 60),
2637 ('SILVER', 'Silver package - 90 days', 'EUR', 13.50, 'STANDARD', 90),
2638 ('SILVER', 'Silver package - 180 days', 'EUR', 24.50, 'STANDARD',180),
2639 ('SILVER', 'Silver package - 365 days', 'EUR', 45.00, 'STANDARD',365),
2640 ('GOLD', 'Gold package - 30 days', 'EUR', 10.00, 'PREMIUM', 30),
2641 ('GOLD', 'Gold package - 60 days', 'EUR', 19.00, 'PREMIUM', 60),
2642 ('GOLD', 'Gold package - 90 days', 'EUR', 27.00, 'PREMIUM', 90),
2643 ('GOLD', 'Gold package - 180 days', 'EUR', 49.00, 'PREMIUM', 180),
2644 ('GOLD', 'Gold package - 365 days', 'EUR', 90.00, 'PREMIUM', 365);
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654 -- USER PACKAGES
2655
2656
2657 INSERT INTO public.userpackages (seller_id, package_id, start_date, end_date)
2658WITH verified_sellers AS (
2659 SELECT user_id
2660 FROM public.appuser
2661 WHERE is_verified = 1
2662),
2663-- Секој seller добива 1 историски (истечен) + 1 тековен пакет (70% шанса)
2664historical AS (
2665 SELECT
2666 vs.user_id AS seller_id,
2667 -- Рандом пакет
2668 (SELECT package_id FROM public.package ORDER BY RANDOM() LIMIT 1) AS package_id,
2669 -- Старт пред 60-365 дена
2670 NOW() - (FLOOR(RANDOM() * 305 + 60) || ' days')::INTERVAL AS start_date
2671 FROM verified_sellers vs
2672),
2673historical_with_end AS (
2674 SELECT
2675 seller_id,
2676 package_id,
2677 start_date,
2678 start_date + (
2679 SELECT duration_days FROM public.package WHERE package_id = historical.package_id
2680 ) * INTERVAL '1 day' AS end_date
2681 FROM historical
2682 -- Само историски: end_date мора да е во минато
2683 WHERE start_date + (
2684 SELECT duration_days FROM public.package WHERE package_id = historical.package_id
2685 ) * INTERVAL '1 day' < NOW()
2686),
2687-- Тековен активен пакет за секој seller
2688current_packages AS (
2689 SELECT
2690 vs.user_id AS seller_id,
2691 (SELECT package_id FROM public.package ORDER BY RANDOM() LIMIT 1) AS package_id,
2692 NOW() - (FLOOR(RANDOM() * 10) || ' days')::INTERVAL AS start_date
2693 FROM verified_sellers vs
2694 WHERE RANDOM() < 0.85 -- 85% имаат активен пакет моментално
2695),
2696current_with_end AS (
2697 SELECT
2698 seller_id,
2699 package_id,
2700 start_date,
2701 start_date + (
2702 SELECT duration_days FROM public.package WHERE package_id = current_packages.package_id
2703 ) * INTERVAL '1 day' AS end_date
2704 FROM current_packages
2705)
2706SELECT seller_id, package_id, start_date, end_date FROM historical_with_end
2707UNION ALL
2708SELECT seller_id, package_id, start_date, end_date FROM current_with_end;
2709
2710
2711
2712
2713
2714
2715-- CART
2716
2717alter sequence cartitems_cart_item_id_seq restart with 1
2718
2719ALTER TABLE public.cart ALTER COLUMN total_price TYPE NUMERIC(10,2);
2720ALTER TABLE public.cartitems ALTER COLUMN price_at_time TYPE NUMERIC(10,2);
2721
2722
2723INSERT INTO public.cart (user_id, created_at, total_price)
2724SELECT
2725 user_id,
2726 (CURRENT_DATE - (FLOOR(RANDOM() * 365))::int) AS created_at,
2727 0
2728FROM public.appuser;
2729
2730
2731
2732-- CART ITEMS
2733
2734INSERT INTO public.cartitems (cart_id, product_id, quantity, price_at_time)
2735WITH item_counts AS (
2736 SELECT cart_id,
2737 CASE WHEN RANDOM() < 0.15 THEN 0
2738 ELSE (FLOOR(RANDOM() * 5) + 1)::int
2739 END AS num_items
2740 FROM public.cart
2741),
2742expanded AS (
2743 SELECT ic.cart_id, gs.n
2744 FROM item_counts ic
2745 CROSS JOIN generate_series(1, 5) AS gs(n)
2746 WHERE gs.n <= ic.num_items
2747),
2748products_numbered AS (
2749 SELECT product_id, price,
2750 ROW_NUMBER() OVER (ORDER BY RANDOM()) AS rn
2751 FROM public.product
2752 WHERE is_active = 1
2753),
2754total AS (
2755 SELECT MAX(rn) AS max_rn FROM products_numbered
2756),
2757expanded_with_rn AS (
2758 SELECT
2759 e.cart_id,
2760 e.n,
2761 (FLOOR(RANDOM() * t.max_rn) + 1)::int AS rand_rn
2762 FROM expanded e
2763 CROSS JOIN total t
2764),
2765with_qty AS (
2766 SELECT
2767 ewr.cart_id,
2768 p.product_id,
2769 CASE WHEN RANDOM() < 0.70 THEN 1
2770 WHEN RANDOM() < 0.90 THEN 2
2771 ELSE 3
2772 END AS quantity,
2773 p.price
2774 FROM expanded_with_rn ewr
2775 JOIN products_numbered p ON p.rn = ewr.rand_rn
2776)
2777SELECT DISTINCT ON (cart_id, product_id)
2778 cart_id,
2779 product_id,
2780 quantity,
2781 price * quantity AS price_at_time
2782FROM with_qty
2783ORDER BY cart_id, product_id
2784ON CONFLICT (cart_id, product_id) DO NOTHING;
2785
2786
2787
2788-- CART UPDATE
2789
2790
2791UPDATE public.cart SET total_price = s.total
2792FROM (SELECT cart_id, SUM(price_at_time) AS total FROM public.cartitems WHERE cart_id BETWEEN 1 AND 50000 GROUP BY cart_id) s
2793WHERE public.cart.cart_id = s.cart_id;
2794
2795
2796UPDATE public.cart SET total_price = s.total
2797FROM (SELECT cart_id, SUM(price_at_time) AS total FROM public.cartitems WHERE cart_id BETWEEN 50001 AND 200000 GROUP BY cart_id) s
2798WHERE public.cart.cart_id = s.cart_id;
2799
2800
2801-- ORDER
2802
2803
2804INSERT INTO public."order" (buyer_id, cart_id, total_price, status, created_at)
2805SELECT
2806 c.user_id AS buyer_id,
2807 c.cart_id,
2808 c.total_price,
2809 CASE
2810 WHEN RANDOM() < 0.20 THEN 'PENDING'
2811 WHEN RANDOM() < 0.45 THEN 'CONFIRMED'
2812 WHEN RANDOM() < 0.65 THEN 'SHIPPED'
2813 WHEN RANDOM() < 0.85 THEN 'DELIVERED'
2814 ELSE 'CANCELLED'
2815 END::public.order_status AS status,
2816 c.created_at + (FLOOR(RANDOM() * 5) || ' days')::INTERVAL AS created_at
2817FROM public.cart c
2818WHERE RANDOM() < 0.70;
2819
2820-- ЧЕКОР 2: Провери
2821SELECT COUNT(*) FROM public."order";
2822
2823
2824-- ORDER ITEMS
2825
2826INSERT INTO public.orderitems (order_id, product_id, seller_id, price_at_time, quantity)
2827SELECT
2828 o.order_id,
2829 ci.product_id,
2830 p.seller_id,
2831 ci.price_at_time,
2832 ci.quantity
2833FROM public."order" o
2834JOIN public.cartitems ci ON ci.cart_id = o.cart_id
2835JOIN public.product p ON p.product_id = ci.product_id;
2836
2837SELECT COUNT(*) AS vkupno_orderitems FROM public.orderitems;
2838SELECT COUNT(DISTINCT product_id) AS unikatni_produkti FROM public.orderitems;
2839
2840
2841-- PAYMENTS ZA ORDERS
2842INSERT INTO public.payment (user_id, order_id, package_id, amount, payment_method, transaction_date)
2843SELECT
2844 o.buyer_id AS user_id,
2845 o.order_id,
2846 NULL AS package_id,
2847 o.total_price AS amount,
2848 (ARRAY['CARD','PAYPAL','CRYPTO','CASH'])[FLOOR(RANDOM() * 4 + 1)::int] AS payment_method,
2849 (o.created_at + (FLOOR(RANDOM() * 3) || ' days')::INTERVAL)::date AS transaction_date
2850FROM public."order" o;
2851
2852-- Payments за packages
2853INSERT INTO public.payment (user_id, order_id, package_id, amount, payment_method, transaction_date)
2854SELECT
2855 up.seller_id AS user_id,
2856 NULL AS order_id,
2857 up.user_package_id AS package_id,
2858 p.price AS amount,
2859 (ARRAY['CARD','PAYPAL','CRYPTO','CASH'])[FLOOR(RANDOM() * 4 + 1)::int] AS payment_method,
2860 up.start_date::date AS transaction_date
2861FROM public.userpackages up
2862JOIN public.package p ON p.package_id = up.package_id;
2863
2864
2865SELECT
2866 CASE WHEN order_id IS NOT NULL THEN 'ORDER' ELSE 'PACKAGE' END AS tip,
2867 COUNT(*) AS broj
2868FROM public.payment
2869GROUP BY tip;
2870
2871
2872
2873
2874-- TRANSACTIONS
2875INSERT INTO public.transactions (payment_id, seller_id, amount, status, transaction_date)
2876SELECT
2877 pay.payment_id,
2878 oi.seller_id,
2879 SUM(oi.price_at_time) AS amount,
2880 (ARRAY['PENDING','PROCESSING','COMPLETED','FAILED','CANCELLED'])[FLOOR(RANDOM() * 5 + 1)::int] AS status,
2881 pay.transaction_date + (FLOOR(RANDOM() * 3) || ' days')::INTERVAL AS transaction_date
2882FROM public.payment pay
2883JOIN public.orderitems oi ON oi.order_id = pay.order_id
2884WHERE pay.order_id IS NOT NULL
2885GROUP BY pay.payment_id, oi.seller_id, pay.transaction_date;
2886
2887
2888SELECT COUNT(*) AS vkupno_transakcii FROM public.transactions;
2889
2890SELECT status, COUNT(*) AS broj
2891FROM public.transactions
2892GROUP BY status
2893ORDER BY broj DESC;
2894
2895-- REVIEW
2896
2897INSERT INTO public.review (product_id, buyer_id, seller_id, rating, comment, created_at)
2898SELECT
2899 oi.product_id,
2900 o.buyer_id,
2901 oi.seller_id,
2902 (FLOOR(RANDOM() * 5) + 1)::int AS rating,
2903 CASE (FLOOR(RANDOM() * 5) + 1)::int
2904 WHEN 1 THEN 'Terrible experience, not recommended.'
2905 WHEN 2 THEN 'Below average, expected better quality.'
2906 WHEN 3 THEN 'Average product, nothing special.'
2907 WHEN 4 THEN 'Good product, satisfied with the purchase.'
2908 WHEN 5 THEN 'Excellent product, highly recommended!'
2909 END AS comment,
2910 (o.created_at + (FLOOR(RANDOM() * 10) + 1 || ' days')::INTERVAL)::date AS created_at
2911FROM public.orderitems oi
2912JOIN public."order" o ON o.order_id = oi.order_id
2913WHERE RANDOM() < 0.80;
2914
2915
2916SELECT COUNT(*) AS vkupno_reviews FROM public.review;
2917SELECT COUNT(DISTINCT product_id) AS unikatni_produkti FROM public.review;
2918SELECT rating, COUNT(*) AS broj FROM public.review GROUP BY rating ORDER BY rating;
2919
2920
2921SELECT product_id, COUNT(*) AS broj_reviews
2922FROM public.review
2923GROUP BY product_id
2924HAVING COUNT(*) > 1
2925ORDER BY broj_reviews DESC
2926LIMIT 10;
2927
2928
2929
2930SELECT AVG(cnt)::NUMERIC(10,2), MIN(cnt), MAX(cnt)
2931FROM (
2932 SELECT seller_id, COUNT(*) AS cnt
2933 FROM public.orderitems
2934 GROUP BY seller_id
2935) sub;
2936
2937
2938SELECT AVG(avg_rating)::NUMERIC(10,2), MIN(avg_rating), MAX(avg_rating)
2939FROM (
2940 SELECT seller_id, AVG(rating) AS avg_rating
2941 FROM public.review
2942 GROUP BY seller_id
2943) sub;
2944
2945
2946SELECT COUNT(DISTINCT up.seller_id)
2947FROM public.userpackages up
2948JOIN public.package p ON p.package_id = up.package_id
2949WHERE p.name = 'GOLD';
2950
2951
2952
2953
2954
2955
2956
2957-- USER BADGE
2958
2959
2960INSERT INTO public.userbadge (user_id, badge_id, awarded_at)
2961
2962-- 1. NEW_SELLER - барем 1 продажба
2963SELECT DISTINCT oi.seller_id, 1, CURRENT_DATE
2964FROM public.orderitems oi
2965JOIN public.appuser a ON a.user_id = oi.seller_id
2966WHERE a.is_verified = 1
2967
2968UNION
2969
2970-- 2. VERIFIED - is_verified = 1
2971SELECT user_id, 2, CURRENT_DATE
2972FROM public.appuser
2973WHERE is_verified = 1
2974
2975UNION
2976
2977-- 3. TOP_SELLER - повеќе од 10 продажби
2978SELECT seller_id, 3, CURRENT_DATE
2979FROM public.orderitems
2980GROUP BY seller_id
2981HAVING COUNT(*) > 10
2982
2983UNION
2984
2985-- 4. TRUSTED_SELLER - prosecen rating >= 3.5
2986SELECT seller_id, 4, CURRENT_DATE
2987FROM public.review
2988GROUP BY seller_id
2989HAVING AVG(rating) >= 3.5
2990
2991UNION
2992
2993-- 5. POPULAR - poveke od 3 razlicni buyers
2994SELECT seller_id, 5, CURRENT_DATE
2995FROM public.orderitems
2996GROUP BY seller_id
2997HAVING COUNT(DISTINCT order_id) > 3
2998
2999UNION
3000
3001-- 6. ACTIVE_USER - poveke od 5 prodazbi
3002SELECT seller_id, 6, CURRENT_DATE
3003FROM public.orderitems
3004GROUP BY seller_id
3005HAVING COUNT(*) > 5
3006
3007UNION
3008
3009-- 7. LOYAL_CUSTOMER - poveke od 8 prodazbi
3010SELECT seller_id, 7, CURRENT_DATE
3011FROM public.orderitems
3012GROUP BY seller_id
3013HAVING COUNT(*) > 8
3014
3015UNION
3016
3017-- 8. FIRST_SALE - barем 1 completed transakcija
3018SELECT DISTINCT t.seller_id, 8, CURRENT_DATE
3019FROM public.transactions t
3020WHERE t.status = 'COMPLETED'
3021
3022UNION
3023
3024-- 9. HIGH_VOLUME - poveke od 15 prodazbi
3025SELECT seller_id, 9, CURRENT_DATE
3026FROM public.orderitems
3027GROUP BY seller_id
3028HAVING COUNT(*) > 15
3029
3030UNION
3031
3032-- 10. TOP_RATED - prosecen rating >= 4.5
3033SELECT seller_id, 10, CURRENT_DATE
3034FROM public.review
3035GROUP BY seller_id
3036HAVING AVG(rating) >= 4.5
3037
3038UNION
3039
3040-- 11. RECOMMENDED - prosecen rating >= 4.0
3041SELECT seller_id, 11, CURRENT_DATE
3042FROM public.review
3043GROUP BY seller_id
3044HAVING AVG(rating) >= 4.0
3045
3046UNION
3047
3048-- 12. PREMIUM_SELLER - SILVER ili GOLD paket
3049SELECT DISTINCT up.seller_id, 12, CURRENT_DATE
3050FROM public.userpackages up
3051JOIN public.package p ON p.package_id = up.package_id
3052WHERE p.name IN ('SILVER', 'GOLD')
3053
3054UNION
3055
3056-- 13. GOLD_SELLER - GOLD paket
3057SELECT DISTINCT up.seller_id, 13, CURRENT_DATE
3058FROM public.userpackages up
3059JOIN public.package p ON p.package_id = up.package_id
3060WHERE p.name = 'GOLD';
3061
3062-- Провери
3063SELECT b.name, COUNT(*) AS broj
3064FROM public.userbadge ub
3065JOIN public.badge b ON b.badge_id = ub.badge_id
3066GROUP BY b.name
3067ORDER BY broj DESC;
3068
3069
3070
3071-- CONVERSATION
3072
3073
3074INSERT INTO public.conversation (product_id, buyer_id, seller_id, created_at)
3075SELECT DISTINCT ON (p.product_id, a.user_id, p.seller_id)
3076 p.product_id,
3077 a.user_id AS buyer_id,
3078 p.seller_id,
3079 NOW() - (FLOOR(RANDOM() * 365) || ' days')::INTERVAL AS created_at
3080FROM public.product p
3081CROSS JOIN LATERAL (
3082 SELECT user_id
3083 FROM public.appuser
3084 ORDER BY RANDOM()
3085 LIMIT 5
3086) a
3087WHERE p.is_active = 1
3088AND a.user_id <> p.seller_id
3089AND RANDOM() < 0.03
3090ON CONFLICT (product_id, buyer_id, seller_id) DO NOTHING;
3091
3092
3093select count(*) from conversation c
3094
3095
3096
3097
3098
3099
3100-- MESSAGES
3101
3102
3103INSERT INTO public.message (conversation_id, sender_id, text, send_at, seen)
3104WITH msg_counts AS (
3105 SELECT
3106 conversation_id,
3107 buyer_id,
3108 seller_id,
3109 created_at,
3110 (FLOOR(RANDOM() * 20) + 1)::int AS num_messages
3111 FROM public.conversation
3112),
3113expanded AS (
3114 SELECT
3115 mc.conversation_id,
3116 mc.buyer_id,
3117 mc.seller_id,
3118 mc.created_at,
3119 gs.n
3120 FROM msg_counts mc
3121 CROSS JOIN generate_series(1, 20) AS gs(n)
3122 WHERE gs.n <= mc.num_messages
3123),
3124with_sender AS (
3125 SELECT
3126 conversation_id,
3127 CASE WHEN RANDOM() < 0.5 THEN buyer_id ELSE seller_id END AS sender_id,
3128 CASE (FLOOR(RANDOM() * 5) + 1)::int
3129 WHEN 1 THEN 'Hi, is this product still available?'
3130 WHEN 2 THEN 'Can you give me more details about this?'
3131 WHEN 3 THEN 'What is the condition of the product?'
3132 WHEN 4 THEN 'Is the price negotiable?'
3133 WHEN 5 THEN 'When can I pick it up?'
3134 END AS text,
3135 created_at + (n * FLOOR(RANDOM() * 60) || ' minutes')::INTERVAL AS send_at,
3136 CASE WHEN RANDOM() < 0.7 THEN 1 ELSE 0 END AS seen
3137 FROM expanded
3138)
3139SELECT conversation_id, sender_id, text, send_at, seen
3140FROM with_sender;
3141
3142
3143SELECT COUNT(*) AS vkupno_poraki FROM public.message;
3144SELECT MIN(cnt), MAX(cnt), AVG(cnt)::NUMERIC(10,2)
3145FROM (
3146 SELECT conversation_id, COUNT(*) AS cnt
3147 FROM public.message
3148 GROUP BY conversation_id
3149) sub;
3150
3151
3152select count(*) from favorites f
3153SELECT COUNT(DISTINCT product_id) FROM public.favorites;
3154
3155
3156
3157
3158-- FAVORITES
3159
3160
3161INSERT INTO public.favorites (user_id, product_id, created_at)
3162SELECT DISTINCT ON (u.user_id, p.product_id)
3163 u.user_id,
3164 p.product_id,
3165 NOW() - (RANDOM() * INTERVAL '365 days') AS created_at
3166FROM generate_series(1, 100000) AS gs(i)
3167JOIN public.appuser u ON u.user_id = (gs.i % 200000) + 1
3168JOIN public.product p ON p.product_id = ((gs.i::bigint * 6527) % 1874551) + 1
3169WHERE p.is_active = 1
3170ON CONFLICT (user_id, product_id) DO NOTHING;
3171
3172
3173SELECT COUNT(distinct product_id) FROM public.favorites;
3174SELECT product_id, COUNT(*) AS broj FROM public.favorites
3175GROUP BY product_id ORDER BY broj DESC LIMIT 10;
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186-- USER ADDRESSES
3187
3188
3189TRUNCATE TABLE public.useraddress RESTART identity cascade;
3190
3191INSERT INTO public.useraddress (user_id, country, city, street, house_number, is_primary)
3192WITH user_addr_counts AS (
3193 SELECT
3194 user_id,
3195 (FLOOR(RANDOM() * 4) + 1)::int AS num_addresses
3196 FROM public.appuser
3197),
3198expanded AS (
3199 SELECT u.user_id, gs.n
3200 FROM user_addr_counts u
3201 CROSS JOIN generate_series(1, 4) AS gs(n)
3202 WHERE gs.n <= u.num_addresses
3203),
3204locations(country, city, street) AS (VALUES
3205 ('Macedonia', 'Skopje', 'Partizanska'),
3206 ('Macedonia', 'Skopje', 'Makedonska'),
3207 ('Macedonia', 'Bitola', 'Shirok Sokak'),
3208 ('Macedonia', 'Ohrid', 'Car Samoil'),
3209 ('Macedonia', 'Tetovo', 'Ilindenska'),
3210 ('Macedonia', 'Kumanovo', 'Oktomvriska'),
3211 ('Macedonia', 'Strumica', 'Goce Delcev'),
3212 ('Macedonia', 'Stip', 'Bregalnička'),
3213 ('Macedonia', 'Veles', 'Titova'),
3214 ('Macedonia', 'Gostivar', 'Makedonska'),
3215 ('Serbia', 'Belgrade', 'Knez Mihailova'),
3216 ('Serbia', 'Novi Sad', 'Dunavska'),
3217 ('Serbia', 'Nis', 'Obrenoviceva'),
3218 ('Serbia', 'Kragujevac','Kralja Petra'),
3219 ('Serbia', 'Subotica', 'Korzo'),
3220 ('Serbia', 'Cacak', 'Kralja Aleksandra'),
3221 ('Serbia', 'Uzice', 'Dimitrija Tucovica'),
3222 ('Serbia', 'Zrenjanin', 'Kralja Aleksandra'),
3223 ('Serbia', 'Leskovac', 'Pašićeva'),
3224 ('Serbia', 'Vranje', 'Kralja Milana'),
3225 ('Croatia', 'Zagreb', 'Ilica'),
3226 ('Croatia', 'Split', 'Marmontova'),
3227 ('Croatia', 'Rijeka', 'Korzo'),
3228 ('Croatia', 'Osijek', 'Europska avenija'),
3229 ('Croatia', 'Zadar', 'Siroka ulica'),
3230 ('Croatia', 'Pula', 'Sergijevaca'),
3231 ('Croatia', 'Dubrovnik', 'Stradun'),
3232 ('Croatia', 'Varazdin', 'Franjevacki trg'),
3233 ('Croatia', 'Sibenik', 'Kralja Tomislava'),
3234 ('Croatia', 'Karlovac', 'Radiceva'),
3235 ('Slovenia', 'Ljubljana', 'Mestni trg'),
3236 ('Slovenia', 'Maribor', 'Glavni trg'),
3237 ('Slovenia', 'Celje', 'Stanetova ulica'),
3238 ('Slovenia', 'Kranj', 'Glavna ulica'),
3239 ('Slovenia', 'Koper', 'Kidriceva ulica'),
3240 ('Slovenia', 'Velenje', 'Titov trg'),
3241 ('Slovenia', 'Novo Mesto','Rozmanova ulica'),
3242 ('Slovenia', 'Ptuj', 'Slovenski trg'),
3243 ('Slovenia', 'Murska Sobota','Slovenska ulica'),
3244 ('Slovenia', 'Jesenice', 'Cesta Franceta Preserna'),
3245 ('Bosnia', 'Sarajevo', 'Ferhadija'),
3246 ('Bosnia', 'Banja Luka','Veselina Maslese'),
3247 ('Bosnia', 'Tuzla', 'Zrtava Fasizma'),
3248 ('Bosnia', 'Mostar', 'Brace Fejica'),
3249 ('Bosnia', 'Zenica', 'Masarykova'),
3250 ('Bosnia', 'Bijeljina', 'Kralja Petra'),
3251 ('Bosnia', 'Trebinje', 'Jovan Ducic'),
3252 ('Bosnia', 'Travnik', 'Vezirska'),
3253 ('Bosnia', 'Bihac', 'Bosanska'),
3254 ('Bosnia', 'Prijedor', 'Kralja Aleksandra'),
3255 ('Germany', 'Berlin', 'Unter den Linden'),
3256 ('Germany', 'Munich', 'Maximilianstrasse'),
3257 ('Germany', 'Hamburg', 'Reeperbahn'),
3258 ('Germany', 'Frankfurt', 'Zeil'),
3259 ('Germany', 'Cologne', 'Schildergasse'),
3260 ('Germany', 'Stuttgart', 'Konigstrasse'),
3261 ('Germany', 'Dusseldorf','Konigsallee'),
3262 ('Germany', 'Leipzig', 'Grimmaische Strasse'),
3263 ('Germany', 'Dresden', 'Prager Strasse'),
3264 ('Germany', 'Nuremberg', 'Karolinenstrasse'),
3265 ('Austria', 'Vienna', 'Kartner Strasse'),
3266 ('Austria', 'Graz', 'Herrengasse'),
3267 ('Austria', 'Linz', 'Landstrasse'),
3268 ('Austria', 'Salzburg', 'Getreidegasse'),
3269 ('Austria', 'Innsbruck', 'Maria-Theresien-Strasse'),
3270 ('Austria', 'Klagenfurt','Alter Platz'),
3271 ('Austria', 'Villach', 'Hauptplatz'),
3272 ('Austria', 'Wels', 'Stadtplatz'),
3273 ('Austria', 'St. Polten','Herrenplatz'),
3274 ('Austria', 'Bregenz', 'Kaiserstrasse'),
3275 ('Hungary', 'Budapest', 'Andrassy ut'),
3276 ('Hungary', 'Debrecen', 'Piac utca'),
3277 ('Hungary', 'Miskolc', 'Szechenyi utca'),
3278 ('Hungary', 'Pecs', 'Kiraly utca'),
3279 ('Hungary', 'Gyor', 'Baross Gabor ut'),
3280 ('Hungary', 'Nyiregyhaza','Doza Gyorgy ut'),
3281 ('Hungary', 'Kecskemet', 'Kossuth ter'),
3282 ('Hungary', 'Szekesfehervar','Fo utca'),
3283 ('Hungary', 'Eger', 'Kossuth Lajos utca'),
3284 ('Hungary', 'Sopron', 'Fo ter'),
3285 ('Greece', 'Athens', 'Ermou'),
3286 ('Greece', 'Thessaloniki','Tsimiski'),
3287 ('Greece', 'Patras', 'Korinthou'),
3288 ('Greece', 'Heraklion', 'Daidalou'),
3289 ('Greece', 'Larissa', '25is Martiou'),
3290 ('Greece', 'Volos', 'Dimitriados'),
3291 ('Greece', 'Rhodes', 'Orfeos'),
3292 ('Greece', 'Ioannina', 'Averof'),
3293 ('Greece', 'Kavala', 'Omonia'),
3294 ('Greece', 'Serres', 'Merkouriou'),
3295 ('Turkey', 'Istanbul', 'Istiklal Caddesi'),
3296 ('Turkey', 'Ankara', 'Ataturk Bulvari'),
3297 ('Turkey', 'Izmir', 'Kordon'),
3298 ('Turkey', 'Bursa', 'Ataturk Caddesi'),
3299 ('Turkey', 'Antalya', 'Cumhuriyet Caddesi'),
3300 ('Turkey', 'Adana', 'Turhan Cemal Beriker'),
3301 ('Turkey', 'Gaziantep', 'Suburcu Caddesi'),
3302 ('Turkey', 'Konya', 'Mevlana Caddesi'),
3303 ('Turkey', 'Kayseri', 'Sivas Caddesi'),
3304 ('Turkey', 'Mersin', 'Istiklal Caddesi')
3305),
3306numbered AS (
3307 SELECT *, ROW_NUMBER() OVER () AS rn, COUNT(*) OVER () AS total
3308 FROM locations
3309)
3310SELECT
3311 e.user_id,
3312 n.country,
3313 n.city,
3314 n.street,
3315 (FLOOR(RANDOM() * 200) + 1)::int AS house_number,
3316 CASE WHEN e.n = 1 THEN 1 ELSE 0 END AS is_primary
3317FROM expanded e
3318JOIN numbered n ON n.rn = ((e.user_id * 7 + e.n * 13) % 100) + 1;
3319
3320-- Провери
3321SELECT COUNT(*) FROM public.useraddress;
3322SELECT country, COUNT(*) AS broj FROM public.useraddress GROUP BY country ORDER BY broj DESC;
3323
3324
3325
3326SELECT COUNT(*) AS problem_users
3327FROM (
3328 SELECT user_id
3329 FROM public.useraddress
3330 WHERE is_primary = 1
3331 GROUP BY user_id
3332 HAVING COUNT(*) != 1
3333) sub;
3334
3335-- SHIPMENT
3336
3337ALTER SEQUENCE shipment_shipment_id_seq RESTART WITH 1;
3338
3339
3340
3341INSERT INTO public.shipment (order_id, carrier_id, user_address_id, tracking_number, status, delivery_method, estimated_delivery_date, actual_delivery_date, created_at, updated_at)
3342SELECT
3343 o.order_id,
3344 (FLOOR(RANDOM() * 30) + 1)::int AS carrier_id,
3345 ua.user_address_id,
3346 -- Уникатен tracking number
3347 UPPER(SUBSTRING(MD5(o.order_id::text || RANDOM()::text), 1, 16)) AS tracking_number,
3348 CASE o.status
3349 WHEN 'PENDING' THEN 'PROCESSING'
3350 WHEN 'CONFIRMED' THEN 'PROCESSING'
3351 WHEN 'SHIPPED' THEN 'TRANSIT'
3352 WHEN 'DELIVERED' THEN 'DELIVERED'
3353 WHEN 'CANCELLED' THEN 'PROCESSING'
3354 END::varchar AS status,
3355 CASE WHEN RANDOM() < 0.7 THEN 'STANDARD' ELSE 'EXPRESS' END AS delivery_method,
3356 -- estimated: 3-7 дена по order
3357 (o.created_at + (FLOOR(RANDOM() * 5) + 3 || ' days')::INTERVAL)::date AS estimated_delivery_date,
3358 -- actual: само за DELIVERED
3359 CASE WHEN o.status = 'DELIVERED'
3360 THEN (o.created_at + (FLOOR(RANDOM() * 7) + 3 || ' days')::INTERVAL)::date
3361 ELSE NULL
3362 END AS actual_delivery_date,
3363 o.created_at AS created_at,
3364 o.created_at + (FLOOR(RANDOM() * 3) || ' days')::INTERVAL AS updated_at
3365FROM public."order" o
3366JOIN public.useraddress ua ON ua.user_id = o.buyer_id AND ua.is_primary = 1;
3367
3368
3369
3370SELECT COUNT(*) AS vkupno_shipments FROM public.shipment;
3371SELECT status, COUNT(*) AS broj FROM public.shipment GROUP BY status ORDER BY broj DESC;
3372SELECT delivery_method, COUNT(*) AS broj FROM public.shipment GROUP BY delivery_method;
3373
3374
3375UPDATE public.shipment s
3376SET status = CASE o.status
3377 WHEN 'DELIVERED' THEN 'DELIVERED'
3378 WHEN 'SHIPPED' THEN 'TRANSIT'
3379 ELSE 'PROCESSING'
3380END
3381FROM public."order" o
3382WHERE s.order_id = o.order_id;
3383
3384
3385SELECT status, COUNT(*) FROM public."order" GROUP BY status;
3386
3387
3388
3389
3390
3391UPDATE public.shipment
3392SET status = 'DELIVERED',
3393 actual_delivery_date = (created_at + (FLOOR(RANDOM() * 7) + 3 || ' days')::INTERVAL)::date
3394WHERE shipment_id IN (
3395 SELECT shipment_id FROM public.shipment ORDER BY RANDOM() LIMIT 80000
3396);
3397
3398
3399