From d8704c38f1fc93f9bde3b99704173d673128b532 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Mon, 6 Apr 2026 16:25:45 -0600 Subject: [PATCH] Fix brittle migrations by replacing hardcoded IDs with robust subqueries --- .../db/migration/V20__seed_owned_pets.sql | 9 +- .../V21__bulk_seed_pets_and_appointments.sql | 199 ++++++++++-------- 2 files changed, 113 insertions(+), 95 deletions(-) diff --git a/backend/src/main/resources/db/migration/V20__seed_owned_pets.sql b/backend/src/main/resources/db/migration/V20__seed_owned_pets.sql index 50a91e1b..5b4f7928 100644 --- a/backend/src/main/resources/db/migration/V20__seed_owned_pets.sql +++ b/backend/src/main/resources/db/migration/V20__seed_owned_pets.sql @@ -1,5 +1,6 @@ INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, customerId) -VALUES - ('Pepper', 'Cat', 'Tabby', 3, 'Owned', 0.00, 1), - ('Coco', 'Dog', 'Pomeranian', 2, 'Owned', 0.00, 4), - ('Finn', 'Dog', 'Border Collie', 5, 'Owned', 0.00, 6); +SELECT 'Pepper', 'Cat', 'Tabby', 3, 'Owned', 0.00, customerId FROM customer WHERE email = 'alex@gmail.com' +UNION ALL +SELECT 'Coco', 'Dog', 'Pomeranian', 2, 'Owned', 0.00, customerId FROM customer WHERE email = 'olivia@gmail.com' +UNION ALL +SELECT 'Finn', 'Dog', 'Border Collie', 5, 'Owned', 0.00, customerId FROM customer WHERE email = 'sophia@gmail.com'; diff --git a/backend/src/main/resources/db/migration/V21__bulk_seed_pets_and_appointments.sql b/backend/src/main/resources/db/migration/V21__bulk_seed_pets_and_appointments.sql index 441351ab..8f65a53d 100644 --- a/backend/src/main/resources/db/migration/V21__bulk_seed_pets_and_appointments.sql +++ b/backend/src/main/resources/db/migration/V21__bulk_seed_pets_and_appointments.sql @@ -1,3 +1,4 @@ +-- Insert 10 new customers INSERT INTO customer (firstName, lastName, email) VALUES ('Noah', 'Parker', 'noah@gmail.com'), ('Mia', 'Evans', 'mia@gmail.com'), @@ -10,47 +11,51 @@ INSERT INTO customer (firstName, lastName, email) VALUES ('James', 'Carter', 'jcarter@gmail.com'), ('Harper', 'Collins', 'harper@gmail.com'); -INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, storeId) VALUES -('Rocky', 'Dog', 'German Shepherd', 1, 'Available', 475.00, 1), -('Daisy', 'Dog', 'Poodle', 2, 'Available', 512.00, 1), -('Cooper', 'Dog', 'Bulldog', 3, 'Available', 560.00, 1), -('Ruby', 'Dog', 'Boxer', 4, 'Available', 575.00, 1), -('Tucker', 'Dog', 'Dachshund', 5, 'Available', 634.00, 1), -('Rosie', 'Dog', 'Shih Tzu', 1, 'Available', 660.00, 2), -('Bear', 'Dog', 'Rottweiler', 2, 'Available', 686.00, 2), -('Maggie', 'Dog', 'Corgi', 3, 'Available', 745.00, 2), -('Leo', 'Dog', 'Husky', 4, 'Available', 749.00, 2), -('Zoey', 'Cat', 'Ragdoll', 1, 'Available', 420.00, 1), -('Oliver', 'Cat', 'British Shorthair', 2, 'Available', 395.00, 1), -('Lola', 'Cat', 'Bengal', 3, 'Available', 465.00, 3), -('Buster', 'Dog', 'Beagle', 2, 'Available', 440.00, 3), -('Sadie', 'Dog', 'Golden Retriever', 1, 'Available', 535.00, 3), -('Toby', 'Dog', 'Labrador', 5, 'Available', 490.00, 1), -('Cleo', 'Cat', 'Abyssinian', 2, 'Available', 375.00, 2), -('Harley', 'Dog', 'Dalmatian', 3, 'Available', 520.00, 1), -('Mocha', 'Cat', 'Burmese', 1, 'Available', 345.00, 3), -('Rex', 'Dog', 'Doberman', 4, 'Available', 610.00, 1), -('Willow', 'Cat', 'Scottish Fold', 2, 'Available', 480.00, 2), -('Gizmo', 'Dog', 'Pomeranian', 1, 'Available', 530.00, 1), -('Nala', 'Cat', 'Siamese', 3, 'Available', 360.00, 2), -('Duke', 'Dog', 'Great Dane', 2, 'Available', 720.00, 3), -('Misty', 'Cat', 'Russian Blue', 4, 'Available', 410.00, 1), -('Ace', 'Dog', 'Australian Shepherd', 1, 'Available', 555.00, 1); +-- Insert available pets linked to stores +INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, storeId) +SELECT 'Rocky', 'Dog', 'German Shepherd', 1, 'Available', 475.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Daisy', 'Dog', 'Poodle', 2, 'Available', 512.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Cooper', 'Dog', 'Bulldog', 3, 'Available', 560.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Ruby', 'Dog', 'Boxer', 4, 'Available', 575.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Tucker', 'Dog', 'Dachshund', 5, 'Available', 634.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Rosie', 'Dog', 'Shih Tzu', 1, 'Available', 660.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Bear', 'Dog', 'Rottweiler', 2, 'Available', 686.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Maggie', 'Dog', 'Corgi', 3, 'Available', 745.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Leo', 'Dog', 'Husky', 4, 'Available', 749.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Zoey', 'Cat', 'Ragdoll', 1, 'Available', 420.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Oliver', 'Cat', 'British Shorthair', 2, 'Available', 395.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Lola', 'Cat', 'Bengal', 3, 'Available', 465.00, storeId FROM storeLocation WHERE storeName = 'West Side Store' UNION ALL +SELECT 'Buster', 'Dog', 'Beagle', 2, 'Available', 440.00, storeId FROM storeLocation WHERE storeName = 'West Side Store' UNION ALL +SELECT 'Sadie', 'Dog', 'Golden Retriever', 1, 'Available', 535.00, storeId FROM storeLocation WHERE storeName = 'West Side Store' UNION ALL +SELECT 'Toby', 'Dog', 'Labrador', 5, 'Available', 490.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Cleo', 'Cat', 'Abyssinian', 2, 'Available', 375.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Harley', 'Dog', 'Dalmatian', 3, 'Available', 520.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Mocha', 'Cat', 'Burmese', 1, 'Available', 345.00, storeId FROM storeLocation WHERE storeName = 'West Side Store' UNION ALL +SELECT 'Rex', 'Dog', 'Doberman', 4, 'Available', 610.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Willow', 'Cat', 'Scottish Fold', 2, 'Available', 480.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Gizmo', 'Dog', 'Pomeranian', 1, 'Available', 530.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Nala', 'Cat', 'Siamese', 3, 'Available', 360.00, storeId FROM storeLocation WHERE storeName = 'North Branch' UNION ALL +SELECT 'Duke', 'Dog', 'Great Dane', 2, 'Available', 720.00, storeId FROM storeLocation WHERE storeName = 'West Side Store' UNION ALL +SELECT 'Misty', 'Cat', 'Russian Blue', 4, 'Available', 410.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch' UNION ALL +SELECT 'Ace', 'Dog', 'Australian Shepherd', 1, 'Available', 555.00, storeId FROM storeLocation WHERE storeName = 'Downtown Branch'; -INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, customerId) VALUES -('Shadow', 'Dog', 'Labrador', 3, 'Adopted', 500.00, 1), -('Kitty', 'Cat', 'Persian', 2, 'Adopted', 320.00, 2), -('Bruno', 'Dog', 'Rottweiler', 4, 'Adopted', 580.00, 3), -('Snowball', 'Cat', 'Turkish Angora', 1, 'Adopted', 390.00, 4), -('Zeus', 'Dog', 'Husky', 3, 'Adopted', 640.00, 5); +-- Insert adopted pets linked to customers +INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, customerId) +SELECT 'Shadow', 'Dog', 'Labrador', 3, 'Adopted', 500.00, customerId FROM customer WHERE email = 'alex@gmail.com' UNION ALL +SELECT 'Kitty', 'Cat', 'Persian', 2, 'Adopted', 320.00, customerId FROM customer WHERE email = 'emily@gmail.com' UNION ALL +SELECT 'Bruno', 'Dog', 'Rottweiler', 4, 'Adopted', 580.00, customerId FROM customer WHERE email = 'james@gmail.com' UNION ALL +SELECT 'Snowball', 'Cat', 'Turkish Angora', 1, 'Adopted', 390.00, customerId FROM customer WHERE email = 'olivia@gmail.com' UNION ALL +SELECT 'Zeus', 'Dog', 'Husky', 3, 'Adopted', 640.00, customerId FROM customer WHERE email = 'william@gmail.com'; -INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, customerId) VALUES -('Biscuit', 'Dog', 'Beagle', 2, 'Owned', 0.00, 6), -('Patches', 'Cat', 'Calico', 5, 'Owned', 0.00, 7), -('Scout', 'Dog', 'Border Collie', 3, 'Owned', 0.00, 8), -('Mittens', 'Cat', 'Domestic Short', 4, 'Owned', 0.00, 9), -('Thor', 'Dog', 'German Shepherd', 2, 'Owned', 0.00, 10); +-- Insert owned pets linked to customers +INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice, customerId) +SELECT 'Biscuit', 'Dog', 'Beagle', 2, 'Owned', 0.00, customerId FROM customer WHERE email = 'sophia@gmail.com' UNION ALL +SELECT 'Patches', 'Cat', 'Calico', 5, 'Owned', 0.00, customerId FROM customer WHERE email = 'noah@gmail.com' UNION ALL +SELECT 'Scout', 'Dog', 'Border Collie', 3, 'Owned', 0.00, customerId FROM customer WHERE email = 'mia@gmail.com' UNION ALL +SELECT 'Mittens', 'Cat', 'Domestic Short', 4, 'Owned', 0.00, customerId FROM customer WHERE email = 'ethan@gmail.com' UNION ALL +SELECT 'Thor', 'Dog', 'German Shepherd', 2, 'Owned', 0.00, customerId FROM customer WHERE email = 'chloe@gmail.com'; +-- Insert adoptions for the adopted pets INSERT INTO adoption (petId, customerId, employeeId, adoptionDate, adoptionStatus) SELECT p.petId, p.customerId, (SELECT e.employeeId FROM employee e JOIN users u ON u.id = e.user_id @@ -86,59 +91,71 @@ SELECT p.petId, p.customerId, '2026-02-21', 'Completed' FROM pet p WHERE p.petName = 'Zeus' AND p.petStatus = 'Adopted'; -INSERT INTO customer_pet (customer_id, pet_name, species, breed) VALUES -(1, 'Rex', 'Dog', 'German Shepherd'), -(2, 'Whiskers', 'Cat', 'Tabby'), -(3, 'Goldie', 'Dog', 'Golden Retriever'), -(4, 'Midnight', 'Cat', 'Black'), -(5, 'Storm', 'Dog', 'Husky'), -(6, 'Peanut', 'Dog', 'Poodle'), -(7, 'Snowball', 'Cat', 'Persian'), -(8, 'Duke', 'Dog', 'Labrador'), -(9, 'Luna', 'Cat', 'Siamese'), -(10, 'Buster', 'Dog', 'Beagle'), -(11, 'Daisy', 'Dog', 'Corgi'), -(12, 'Cleo', 'Cat', 'Ragdoll'); +-- Insert customer_pet entries +INSERT INTO customer_pet (customer_id, pet_name, species, breed) +SELECT customerId, 'Rex', 'Dog', 'German Shepherd' FROM customer WHERE email = 'alex@gmail.com' UNION ALL +SELECT customerId, 'Whiskers', 'Cat', 'Tabby' FROM customer WHERE email = 'emily@gmail.com' UNION ALL +SELECT customerId, 'Goldie', 'Dog', 'Golden Retriever' FROM customer WHERE email = 'james@gmail.com' UNION ALL +SELECT customerId, 'Midnight', 'Cat', 'Black' FROM customer WHERE email = 'olivia@gmail.com' UNION ALL +SELECT customerId, 'Storm', 'Dog', 'Husky' FROM customer WHERE email = 'william@gmail.com' UNION ALL +SELECT customerId, 'Peanut', 'Dog', 'Poodle' FROM customer WHERE email = 'sophia@gmail.com' UNION ALL +SELECT customerId, 'Snowball', 'Cat', 'Persian' FROM customer WHERE email = 'noah@gmail.com' UNION ALL +SELECT customerId, 'Duke', 'Dog', 'Labrador' FROM customer WHERE email = 'mia@gmail.com' UNION ALL +SELECT customerId, 'Luna', 'Cat', 'Siamese' FROM customer WHERE email = 'ethan@gmail.com' UNION ALL +SELECT customerId, 'Buster', 'Dog', 'Beagle' FROM customer WHERE email = 'chloe@gmail.com' UNION ALL +SELECT customerId, 'Daisy', 'Dog', 'Corgi' FROM customer WHERE email = 'lucas@gmail.com' UNION ALL +SELECT customerId, 'Cleo', 'Cat', 'Ragdoll' FROM customer WHERE email = 'lily@gmail.com'; -INSERT INTO appointment (serviceId, customerId, appointmentDate, appointmentTime, appointmentStatus, storeId, employeeId) VALUES -(1, 1, '2026-01-10', '09:00:00', 'Completed', 1, 1), -(2, 2, '2026-01-10', '11:00:00', 'Completed', 1, 1), -(3, 3, '2026-01-17', '09:00:00', 'Missed', 1, 1), -(4, 4, '2026-01-17', '14:00:00', 'Completed', 1, 1), -(5, 5, '2026-01-24', '10:00:00', 'Completed', 1, 1), -(1, 6, '2026-01-24', '13:00:00', 'Missed', 1, 1), -(2, 7, '2026-02-07', '09:00:00', 'Completed', 1, 1), -(3, 8, '2026-02-07', '11:00:00', 'Completed', 1, 1), -(1, 9, '2026-01-11', '09:00:00', 'Completed', 1, 2), -(2, 10, '2026-01-11', '11:00:00', 'Missed', 1, 2), -(3, 11, '2026-01-18', '10:00:00', 'Completed', 1, 2), -(4, 12, '2026-01-18', '13:00:00', 'Completed', 1, 2), -(5, 1, '2026-02-01', '09:00:00', 'Completed', 1, 2), -(1, 2, '2026-02-01', '14:00:00', 'Missed', 1, 2), -(2, 3, '2026-02-08', '10:00:00', 'Completed', 1, 2), -(3, 4, '2026-02-08', '13:00:00', 'Completed', 1, 2), -(4, 5, '2026-01-12', '09:00:00', 'Completed', 1, 5), -(5, 6, '2026-01-12', '11:00:00', 'Completed', 1, 5), -(1, 7, '2026-01-19', '09:00:00', 'Missed', 1, 5), -(2, 8, '2026-01-19', '14:00:00', 'Completed', 1, 5), -(3, 9, '2026-02-09', '10:00:00', 'Completed', 1, 5), -(4, 10, '2026-02-09', '13:00:00', 'Completed', 1, 5), -(1, 11, '2026-01-13', '09:00:00', 'Completed', 2, 3), -(2, 12, '2026-01-13', '11:00:00', 'Completed', 2, 3), -(3, 1, '2026-02-10', '09:00:00', 'Missed', 2, 3), -(4, 2, '2026-02-10', '13:00:00', 'Completed', 2, 3), -(1, 3, '2026-01-14', '10:00:00', 'Completed', 3, 4), -(2, 4, '2026-01-14', '13:00:00', 'Completed', 3, 4), -(3, 5, '2026-02-11', '10:00:00', 'Missed', 3, 4), -(4, 6, '2026-02-11', '14:00:00', 'Completed', 3, 4), -(1, 7, '2026-04-15', '09:00:00', 'Booked', 1, 1), -(2, 8, '2026-04-15', '11:00:00', 'Booked', 1, 2), -(3, 9, '2026-04-16', '10:00:00', 'Booked', 1, 5), -(4, 10, '2026-04-17', '09:00:00', 'Booked', 2, 3), -(5, 11, '2026-04-18', '14:00:00', 'Booked', 3, 4); +-- Helper function or complex query to seed appointments robustly +-- For simplicity and robustness, I will use individual inserts for the first few and a pattern for the rest +INSERT INTO appointment (serviceId, customerId, appointmentDate, appointmentTime, appointmentStatus, storeId, employeeId) +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'alex@gmail.com'), '2026-01-10', '09:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'emily@gmail.com'), '2026-01-10', '11:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'james@gmail.com'), '2026-01-17', '09:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'olivia@gmail.com'), '2026-01-17', '14:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Teeth Cleaning'), (SELECT customerId FROM customer WHERE email = 'william@gmail.com'), '2026-01-24', '10:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'sophia@gmail.com'), '2026-01-24', '13:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'noah@gmail.com'), '2026-02-07', '09:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'mia@gmail.com'), '2026-02-07', '11:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'ethan@gmail.com'), '2026-01-11', '09:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'chloe@gmail.com'), '2026-01-11', '11:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'lucas@gmail.com'), '2026-01-18', '10:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'lily@gmail.com'), '2026-01-18', '13:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Teeth Cleaning'), (SELECT customerId FROM customer WHERE email = 'alex@gmail.com'), '2026-02-01', '09:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'emily@gmail.com'), '2026-02-01', '14:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'james@gmail.com'), '2026-02-08', '10:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'olivia@gmail.com'), '2026-02-08', '13:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'william@gmail.com'), '2026-01-12', '09:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Teeth Cleaning'), (SELECT customerId FROM customer WHERE email = 'sophia@gmail.com'), '2026-01-12', '11:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'noah@gmail.com'), '2026-01-19', '09:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'mia@gmail.com'), '2026-01-19', '14:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'ethan@gmail.com'), '2026-02-09', '10:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'chloe@gmail.com'), '2026-02-09', '13:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'lucas@gmail.com'), '2026-01-13', '09:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'North Branch'), (SELECT employeeId FROM employee WHERE email = 'michael@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'lily@gmail.com'), '2026-01-13', '11:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'North Branch'), (SELECT employeeId FROM employee WHERE email = 'michael@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'alex@gmail.com'), '2026-02-10', '09:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'North Branch'), (SELECT employeeId FROM employee WHERE email = 'michael@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'emily@gmail.com'), '2026-02-10', '13:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'North Branch'), (SELECT employeeId FROM employee WHERE email = 'michael@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'james@gmail.com'), '2026-01-14', '10:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'West Side Store'), (SELECT employeeId FROM employee WHERE email = 'lisa@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'olivia@gmail.com'), '2026-01-14', '13:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'West Side Store'), (SELECT employeeId FROM employee WHERE email = 'lisa@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'william@gmail.com'), '2026-02-11', '10:00:00', 'Missed', (SELECT storeId FROM storeLocation WHERE storeName = 'West Side Store'), (SELECT employeeId FROM employee WHERE email = 'lisa@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'sophia@gmail.com'), '2026-02-11', '14:00:00', 'Completed', (SELECT storeId FROM storeLocation WHERE storeName = 'West Side Store'), (SELECT employeeId FROM employee WHERE email = 'lisa@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Pet Grooming'), (SELECT customerId FROM customer WHERE email = 'noah@gmail.com'), '2026-04-15', '09:00:00', 'Booked', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'john@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Nail Trimming'), (SELECT customerId FROM customer WHERE email = 'mia@gmail.com'), '2026-04-15', '11:00:00', 'Booked', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'sara@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Bath and Brush'), (SELECT customerId FROM customer WHERE email = 'ethan@gmail.com'), '2026-04-16', '10:00:00', 'Booked', (SELECT storeId FROM storeLocation WHERE storeName = 'Downtown Branch'), (SELECT employeeId FROM employee WHERE email = 'david@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Veterinary Checkup'), (SELECT customerId FROM customer WHERE email = 'chloe@gmail.com'), '2026-04-17', '09:00:00', 'Booked', (SELECT storeId FROM storeLocation WHERE storeName = 'North Branch'), (SELECT employeeId FROM employee WHERE email = 'michael@petshop.com') UNION ALL +SELECT (SELECT serviceId FROM service WHERE serviceName = 'Teeth Cleaning'), (SELECT customerId FROM customer WHERE email = 'lucas@gmail.com'), '2026-04-18', '14:00:00', 'Booked', (SELECT storeId FROM storeLocation WHERE storeName = 'West Side Store'), (SELECT employeeId FROM employee WHERE email = 'lisa@petshop.com'); +-- Re-linking appointments to customer pets using a slightly more robust join +-- This still assumes appointments and customer_pets were inserted in a specific order, +-- but at least it uses current IDs from the database. INSERT INTO appointment_customer_pet (appointment_id, customer_pet_id) -SELECT a.appointmentId, - (((a.appointmentId - 6) % 12) + 1) -FROM appointment a -WHERE a.appointmentId BETWEEN 6 AND 40; +SELECT a.appointmentId, cp.customer_pet_id +FROM ( + SELECT appointmentId, ROW_NUMBER() OVER (ORDER BY appointmentId) as row_num + FROM appointment + WHERE appointmentId > (SELECT COALESCE(MAX(appointmentId), 0) FROM (SELECT appointmentId FROM appointment LIMIT 5) t) +) a +JOIN ( + SELECT customer_pet_id, ROW_NUMBER() OVER (ORDER BY customer_pet_id) as row_num + FROM customer_pet +) cp ON ((a.row_num - 1) % 12) + 1 = cp.row_num;