Fix brittle migrations by replacing hardcoded IDs with robust subqueries

This commit is contained in:
2026-04-06 16:25:45 -06:00
parent d839081112
commit d8704c38f1
2 changed files with 113 additions and 95 deletions

View File

@@ -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';

View File

@@ -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;