| 1 | -- polnenje.sql (robust, ID-agnostic)
|
|---|
| 2 |
|
|---|
| 3 | -- Optional: clear data if re-running
|
|---|
| 4 | -- (Do bridges first to avoid FK issues)
|
|---|
| 5 | DELETE FROM "User_Purchased_Package";
|
|---|
| 6 | DELETE FROM "User_Purchased_Merch";
|
|---|
| 7 | -- KEEPING backend name:
|
|---|
| 8 | DELETE FROM "User_Event";
|
|---|
| 9 | DELETE FROM "User_Booked_Class";
|
|---|
| 10 | DELETE FROM "Class_Includes_Training";
|
|---|
| 11 |
|
|---|
| 12 | DELETE FROM "Merch_Items";
|
|---|
| 13 | DELETE FROM "Package";
|
|---|
| 14 | DELETE FROM "Event";
|
|---|
| 15 | DELETE FROM "Class";
|
|---|
| 16 | DELETE FROM "Training";
|
|---|
| 17 | DELETE FROM "Instructor";
|
|---|
| 18 | DELETE FROM "User";
|
|---|
| 19 |
|
|---|
| 20 |
|
|---|
| 21 | INSERT INTO "User" (username, email, password_hash, first_name, last_name)
|
|---|
| 22 | VALUES
|
|---|
| 23 | ('ana123', 'ana@example.com', 'hashA1', 'Ana', 'Naumovska'),
|
|---|
| 24 | ('mikiYoga', 'miki@example.com', 'hashA2', 'Miki', 'Trajkov'),
|
|---|
| 25 | ('davidG', 'david@example.com', 'hashA3', 'David', 'Georgiev');
|
|---|
| 26 |
|
|---|
| 27 |
|
|---|
| 28 | INSERT INTO "Instructor" (instructor_email, instructor_password_hash, first_name, last_name, biography)
|
|---|
| 29 | VALUES
|
|---|
| 30 | ('elena@studio.com', 'passElena', 'Elena', 'Petrova', 'Certified in Vinyasa Yoga'),
|
|---|
| 31 | ('stefan@studio.com', 'passStefan', 'Stefan', 'Ristov', 'Hatha & Yin Yoga Teacher');
|
|---|
| 32 |
|
|---|
| 33 |
|
|---|
| 34 | INSERT INTO "Training" (training_name, description, duration, intensity_level)
|
|---|
| 35 | VALUES
|
|---|
| 36 | ('Vinyasa Flow', 'Linking breath to movement', 60, 'Intermediate'),
|
|---|
| 37 | ('Hatha Basics', 'Focus on foundational poses', 45, 'Beginner');
|
|---|
| 38 |
|
|---|
| 39 |
|
|---|
| 40 | INSERT INTO "Class" (date, start_time, end_time, location, capacity, seats_available, instructor_id)
|
|---|
| 41 | VALUES
|
|---|
| 42 | ('2025-06-10', '08:00', '09:00', 'Studio A', 20, 20,
|
|---|
| 43 | (SELECT instructor_id FROM "Instructor" WHERE instructor_email='elena@studio.com')),
|
|---|
| 44 | ('2025-06-10', '09:30', '10:30', 'Studio B', 15, 15,
|
|---|
| 45 | (SELECT instructor_id FROM "Instructor" WHERE instructor_email='stefan@studio.com'));
|
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 | INSERT INTO "Event" (event_name, description, date, time, location)
|
|---|
| 49 | VALUES
|
|---|
| 50 | ('Summer Yoga Workshop', 'Outdoor event for all levels', '2025-07-05', '09:00', 'City Park'),
|
|---|
| 51 | ('Meditation Retreat', 'Weekend retreat with meditation', '2025-08-01', '08:00', 'Mountain Lodge');
|
|---|
| 52 |
|
|---|
| 53 |
|
|---|
| 54 | INSERT INTO "Package" (package_name, price, num_classes)
|
|---|
| 55 | VALUES
|
|---|
| 56 | ('5-Class Pass', 25.00, 5),
|
|---|
| 57 | ('10-Class Pass', 45.00, 10);
|
|---|
| 58 |
|
|---|
| 59 |
|
|---|
| 60 | INSERT INTO "Merch_Items" (item_name, description, price, quantity_in_stock)
|
|---|
| 61 | VALUES
|
|---|
| 62 | ('Yoga Mat', 'Eco-friendly TPE mat', 30.00, 50),
|
|---|
| 63 | ('Yoga Block', 'Cork block for alignment', 12.00, 30);
|
|---|
| 64 |
|
|---|
| 65 |
|
|---|
| 66 | -- Bridge tables (via sub-selects, no hardcoded IDs)
|
|---|
| 67 | ---------------------------------------------------------
|
|---|
| 68 |
|
|---|
| 69 | -- User_Booked_Class (books)
|
|---|
| 70 | INSERT INTO "User_Booked_Class" (user_id, class_id)
|
|---|
| 71 | VALUES
|
|---|
| 72 | (
|
|---|
| 73 | (SELECT user_id FROM "User" WHERE email='ana@example.com'),
|
|---|
| 74 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='08:00' AND location='Studio A')
|
|---|
| 75 | ),
|
|---|
| 76 | (
|
|---|
| 77 | (SELECT user_id FROM "User" WHERE email='miki@example.com'),
|
|---|
| 78 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='08:00' AND location='Studio A')
|
|---|
| 79 | ),
|
|---|
| 80 | (
|
|---|
| 81 | (SELECT user_id FROM "User" WHERE email='david@example.com'),
|
|---|
| 82 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='09:30' AND location='Studio B')
|
|---|
| 83 | );
|
|---|
| 84 |
|
|---|
| 85 | -- Class_Includes_Training (is_scheduled_for)
|
|---|
| 86 | INSERT INTO "Class_Includes_Training" (class_id, training_id)
|
|---|
| 87 | VALUES
|
|---|
| 88 | (
|
|---|
| 89 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='08:00' AND location='Studio A'),
|
|---|
| 90 | (SELECT training_id FROM "Training" WHERE training_name='Vinyasa Flow')
|
|---|
| 91 | ),
|
|---|
| 92 | (
|
|---|
| 93 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='09:30' AND location='Studio B'),
|
|---|
| 94 | (SELECT training_id FROM "Training" WHERE training_name='Hatha Basics')
|
|---|
| 95 | );
|
|---|
| 96 |
|
|---|
| 97 | -- User_Event (registers) (backend expects this table name)
|
|---|
| 98 | INSERT INTO "User_Event" (user_id, event_id)
|
|---|
| 99 | VALUES
|
|---|
| 100 | (
|
|---|
| 101 | (SELECT user_id FROM "User" WHERE email='ana@example.com'),
|
|---|
| 102 | (SELECT event_id FROM "Event" WHERE event_name='Summer Yoga Workshop' AND date='2025-07-05')
|
|---|
| 103 | ),
|
|---|
| 104 | (
|
|---|
| 105 | (SELECT user_id FROM "User" WHERE email='miki@example.com'),
|
|---|
| 106 | (SELECT event_id FROM "Event" WHERE event_name='Meditation Retreat' AND date='2025-08-01')
|
|---|
| 107 | );
|
|---|
| 108 |
|
|---|
| 109 | -- User_Purchased_Package (buys)
|
|---|
| 110 | INSERT INTO "User_Purchased_Package" (user_id, package_id)
|
|---|
| 111 | VALUES
|
|---|
| 112 | (
|
|---|
| 113 | (SELECT user_id FROM "User" WHERE email='ana@example.com'),
|
|---|
| 114 | (SELECT package_id FROM "Package" WHERE package_name='5-Class Pass')
|
|---|
| 115 | ),
|
|---|
| 116 | (
|
|---|
| 117 | (SELECT user_id FROM "User" WHERE email='miki@example.com'),
|
|---|
| 118 | (SELECT package_id FROM "Package" WHERE package_name='10-Class Pass')
|
|---|
| 119 | );
|
|---|
| 120 |
|
|---|
| 121 | -- User_Purchased_Merch (purchases)
|
|---|
| 122 | INSERT INTO "User_Purchased_Merch" (user_id, merch_id)
|
|---|
| 123 | VALUES
|
|---|
| 124 | (
|
|---|
| 125 | (SELECT user_id FROM "User" WHERE email='ana@example.com'),
|
|---|
| 126 | (SELECT merch_id FROM "Merch_Items" WHERE item_name='Yoga Mat')
|
|---|
| 127 | ),
|
|---|
| 128 | (
|
|---|
| 129 | (SELECT user_id FROM "User" WHERE email='ana@example.com'),
|
|---|
| 130 | (SELECT merch_id FROM "Merch_Items" WHERE item_name='Yoga Block')
|
|---|
| 131 | ),
|
|---|
| 132 | (
|
|---|
| 133 | (SELECT user_id FROM "User" WHERE email='miki@example.com'),
|
|---|
| 134 | (SELECT merch_id FROM "Merch_Items" WHERE item_name='Yoga Block')
|
|---|
| 135 | );
|
|---|
| 136 |
|
|---|
| 137 | -- Package_Includes_Class (is_for)
|
|---|
| 138 | INSERT INTO "Package_Includes_Class" (package_id, class_id)
|
|---|
| 139 | VALUES
|
|---|
| 140 | (
|
|---|
| 141 | (SELECT package_id FROM "Package" WHERE package_name='5-Class Pass'),
|
|---|
| 142 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='08:00' AND location='Studio A')
|
|---|
| 143 | ),
|
|---|
| 144 | (
|
|---|
| 145 | (SELECT package_id FROM "Package" WHERE package_name='5-Class Pass'),
|
|---|
| 146 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='09:30' AND location='Studio B')
|
|---|
| 147 | ),
|
|---|
| 148 | (
|
|---|
| 149 | (SELECT package_id FROM "Package" WHERE package_name='10-Class Pass'),
|
|---|
| 150 | (SELECT class_id FROM "Class" WHERE date='2025-06-10' AND start_time='08:00' AND location='Studio A')
|
|---|
| 151 | );
|
|---|