From 89d3accabcd961464c514f6146d4b014b220a453 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Tue, 10 Mar 2026 13:10:52 -0600 Subject: [PATCH] Add seed data migration and fix schema NOT NULL constraints --- src/main/resources/application.yml | 2 +- .../db/migration/V1__baseline_schema.sql | 10 +- .../resources/db/migration/V2__seed_data.sql | 205 ++++++++++++++++++ 3 files changed, 211 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/db/migration/V2__seed_data.sql diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6338af51..f7c2ceba 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -20,7 +20,7 @@ spring: jpa: hibernate: - ddl-auto: validate + ddl-auto: none naming: physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl show-sql: ${JPA_SHOW_SQL:false} diff --git a/src/main/resources/db/migration/V1__baseline_schema.sql b/src/main/resources/db/migration/V1__baseline_schema.sql index 097a7328..ae1ca009 100644 --- a/src/main/resources/db/migration/V1__baseline_schema.sql +++ b/src/main/resources/db/migration/V1__baseline_schema.sql @@ -227,9 +227,9 @@ CREATE TABLE IF NOT EXISTS conversation ( id BIGINT AUTO_INCREMENT PRIMARY KEY, customerId BIGINT NOT NULL, staffId BIGINT, - status VARCHAR(20) DEFAULT 'OPEN', - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + status VARCHAR(20) NOT NULL DEFAULT 'OPEN', + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (customerId) REFERENCES customer(customerId), FOREIGN KEY (staffId) REFERENCES users(id) ); @@ -239,8 +239,8 @@ CREATE TABLE IF NOT EXISTS message ( conversationId BIGINT NOT NULL, senderId BIGINT NOT NULL, content TEXT NOT NULL, - timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - isRead BOOLEAN DEFAULT FALSE, + timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + isRead BOOLEAN NOT NULL DEFAULT FALSE, FOREIGN KEY (conversationId) REFERENCES conversation(id), FOREIGN KEY (senderId) REFERENCES users(id) ); diff --git a/src/main/resources/db/migration/V2__seed_data.sql b/src/main/resources/db/migration/V2__seed_data.sql new file mode 100644 index 00000000..5e8d3fb6 --- /dev/null +++ b/src/main/resources/db/migration/V2__seed_data.sql @@ -0,0 +1,205 @@ +-- Insert Sample Data + +INSERT INTO storeLocation (storeName, address, phone, email) +VALUES +('Downtown Branch', '123 Main St', '123-456-7890', 'downtown@petshop.com'), +('North Branch', '456 North Ave', '987-654-3210', 'north@petshop.com'), +('West Side Store', '789 West Blvd', '555-123-4567', 'westside@petshop.com'), +('East End Shop', '321 East Road', '555-987-6543', 'eastend@petshop.com'), +('South Mall Location', '654 South Plaza', '555-246-8135', 'southmall@petshop.com'); + +INSERT INTO employee (firstName, lastName, email, phone, role, isActive) +VALUES +('John', 'Doe', 'john@petshop.com', '111-222-3333', 'Manager', TRUE), +('Sara', 'Smith', 'sara@petshop.com', '444-555-6666', 'Staff', TRUE), +('Michael', 'Johnson', 'michael@petshop.com', '222-333-4444', 'Groomer', TRUE), +('Lisa', 'Williams', 'lisa@petshop.com', '333-444-5555', 'Staff', TRUE), +('David', 'Brown', 'david@petshop.com', '555-666-7777', 'Veterinarian', TRUE), +('Emma', 'Davis', 'emma@petshop.com', '666-777-8888', 'Manager', FALSE); + +INSERT INTO employeeStore (employeeId, storeId) +VALUES +(1, 1), +(2, 1), +(2, 2), +(3, 2), +(4, 3), +(5, 1), +(5, 4), +(6, 5); + +INSERT INTO customer (firstName, lastName, email, phone) +VALUES +('Alex', 'Brown', 'alex@gmail.com', '777-888-9999'), +('Emily', 'Clark', 'emily@gmail.com', '666-555-4444'), +('James', 'Wilson', 'james@gmail.com', '888-999-0000'), +('Olivia', 'Martinez', 'olivia@gmail.com', '999-000-1111'), +('William', 'Anderson', 'william@gmail.com', '000-111-2222'), +('Sophia', 'Taylor', 'sophia@gmail.com', '111-222-3333'); + +INSERT INTO pet (petName, petSpecies, petBreed, petAge, petStatus, petPrice) +VALUES +('Buddy', 'Dog', 'Labrador', 2, 'Available', 500.00), +('Milo', 'Cat', 'Persian', 1, 'Available', 300.00), +('Charlie', 'Dog', 'Golden Retriever', 3, 'Available', 550.00), +('Luna', 'Cat', 'Siamese', 2, 'Adopted', 350.00), +('Max', 'Dog', 'Beagle', 1, 'Available', 450.00), +('Bella', 'Cat', 'Maine Coon', 4, 'Available', 400.00); + +INSERT INTO adoption (petId, customerId, adoptionDate, adoptionStatus) +VALUES +(1, 1, '2026-01-15', 'Completed'), +(4, 3, '2026-01-20', 'Completed'), +(2, 2, '2026-01-25', 'Pending'), +(5, 4, '2026-02-01', 'Completed'), +(6, 5, '2026-02-02', 'Pending'); + +INSERT INTO supplier (supCompany, supContactFirstName, supContactLastName, supEmail, supPhone) +VALUES +('PetFood Inc', 'Robert', 'King', 'contact@petfood.com', '888-111-2222'), +('Toy World', 'Jennifer', 'Lee', 'sales@toyworld.com', '888-222-3333'), +('Pet Supplies Co', 'Kevin', 'White', 'info@petsupplies.com', '888-333-4444'), +('Animal Care Products', 'Nancy', 'Green', 'orders@animalcare.com', '888-444-5555'), +('Premium Pet Goods', 'Tom', 'Black', 'support@premiumpet.com', '888-555-6666'); + +INSERT INTO category (categoryName, categoryType) +VALUES +('Dog Food', 'Product'), +('Cat Toys', 'Product'), +('Bird Supplies', 'Product'), +('Aquarium', 'Product'), +('Small Animals', 'Product'); + +INSERT INTO product (prodName, prodPrice, categoryId, prodDesc) +VALUES +('Premium Dog Food', 50.00, 1, 'High quality dog food'), +('Cat Toy Ball', 10.00, 2, 'Colorful toy for cats'), +('Bird Cage Large', 120.00, 3, 'Spacious bird cage'), +('Fish Tank 20 Gallon', 80.00, 4, 'Complete aquarium kit'), +('Hamster Wheel', 15.00, 5, 'Exercise wheel for small pets'), +('Organic Dog Treats', 25.00, 1, 'Natural dog treats'); + +INSERT INTO productSupplier (supId, prodId, cost) +VALUES +(1, 1, 35.00), +(1, 2, 6.50), +(2, 2, 7.00), +(3, 3, 90.00), +(3, 4, 60.00), +(4, 5, 10.00), +(5, 6, 18.00), +(1, 6, 17.50); + +INSERT INTO inventory (prodId, quantity) +VALUES +(1, 100), +(2, 200), +(3, 50), +(4, 30), +(5, 150), +(6, 75); + +INSERT INTO service (serviceName, serviceDesc, serviceDuration, servicePrice) +VALUES +('Pet Grooming', 'Full grooming service', 60, 40.00), +('Nail Trimming', 'Quick nail trim', 15, 10.00), +('Bath and Brush', 'Bathing and brushing service', 45, 30.00), +('Veterinary Checkup', 'Complete health examination', 30, 75.00), +('Teeth Cleaning', 'Professional dental cleaning', 90, 100.00); + +INSERT INTO appointment (serviceId, customerId, appointmentDate, appointmentTime, appointmentStatus) +VALUES +(1, 2, '2026-02-01', '10:30:00', 'Booked'), +(2, 1, '2026-02-03', '14:00:00', 'Booked'), +(3, 3, '2026-02-05', '09:00:00', 'Completed'), +(4, 4, '2026-02-07', '11:30:00', 'Booked'), +(5, 5, '2026-02-10', '15:00:00', 'Cancelled'); + +INSERT INTO appointmentPet (appointmentId, petId) +VALUES +(1, 2), +(2, 1), +(3, 3), +(4, 5), +(5, 6); + +INSERT INTO sale (saleDate, totalAmount, paymentMethod, employeeId, storeId, customerId) +VALUES +('2026-01-05 09:15:00', 125.00, 'Card', 1, 1, 1), +('2026-01-08 11:30:00', 200.00, 'Card', 2, 1, 2), +('2026-01-12 14:20:00', 60.00, 'Cash', 3, 2, 3), +('2026-01-15 10:45:00', 150.00, 'Debit', 1, 1, 1), +('2026-01-18 16:30:00', 80.00, 'Card', 4, 3, 2), +('2026-01-22 13:15:00', 95.00, 'Cash', 2, 2, NULL), +('2026-01-25 15:40:00', 240.00, 'Card', 5, 4, 4), +('2026-01-28 10:30:00', 80.00, 'Cash', 1, 1, NULL), +('2026-02-01 09:00:00', 175.00, 'Card', 3, 3, 1), +('2026-02-03 11:20:00', 120.00, 'Card', 2, 1, 3), +('2026-02-05 14:50:00', 45.00, 'Cash', 4, 2, NULL), +('2026-02-08 16:15:00', 160.00, 'Debit', 1, 1, 2), +('2026-02-10 10:25:00', 100.00, 'Card', 5, 4, NULL), +('2026-02-12 13:45:00', 50.00, 'Cash', 2, 2, 1), +('2026-02-15 15:30:00', 85.00, 'Card', 3, 3, NULL), +('2026-02-18 11:10:00', 200.00, 'Card', 1, 1, 4), +('2026-02-20 14:35:00', 155.00, 'Debit', 4, 3, NULL), +('2026-02-22 16:50:00', 75.00, 'Cash', 2, 1, 2), +('2026-02-24 10:15:00', 140.00, 'Card', 5, 4, NULL), +(NOW(), 95.00, 'Card', 1, 1, 1); + +INSERT INTO saleItem (saleId, prodId, quantity, unitPrice) +VALUES +(1, 1, 2, 50.00), +(1, 6, 1, 25.00), +(2, 3, 1, 120.00), +(2, 4, 1, 80.00), +(3, 2, 3, 10.00), +(3, 5, 2, 15.00), +(4, 1, 3, 50.00), +(5, 4, 1, 80.00), +(6, 2, 4, 10.00), +(6, 5, 1, 15.00), +(6, 6, 1, 25.00), +(6, 1, 1, 50.00), +(7, 3, 2, 120.00), +(8, 1, 1, 50.00), +(8, 2, 3, 10.00), +(9, 1, 3, 50.00), +(9, 6, 1, 25.00), +(10, 3, 1, 120.00), +(11, 5, 1, 15.00), +(11, 2, 3, 10.00), +(12, 4, 2, 80.00), +(13, 6, 4, 25.00), +(14, 1, 1, 50.00), +(15, 2, 2, 10.00), +(15, 5, 1, 15.00), +(15, 6, 2, 25.00), +(16, 3, 1, 120.00), +(16, 4, 1, 80.00), +(17, 4, 1, 80.00), +(17, 1, 1, 50.00), +(17, 6, 1, 25.00), +(18, 6, 2, 25.00), +(18, 2, 2, 10.00), +(18, 5, 1, 15.00), +(19, 1, 2, 50.00), +(19, 6, 2, 25.00), +(20, 2, 5, 10.00), +(20, 5, 3, 15.00); + +INSERT INTO purchaseOrder (supId, orderDate, status) +VALUES +(1, '2025-01-15', 'Delivered'), +(2, '2025-01-20', 'Pending'), +(3, '2025-02-01', 'Delivered'), +(4, '2025-02-10', 'In Transit'), +(1, '2025-02-15', 'Pending'); + +INSERT INTO activityLog (employeeId, activity) +VALUES +(1, 'Created new sale'), +(2, 'Booked appointment'), +(3, 'Completed grooming service'), +(4, 'Processed inventory order'), +(5, 'Conducted health checkup'), +(1, 'Updated customer information');