diff --git a/.github/workflows/k6-perf.yml b/.github/workflows/k6-perf.yml
index 00a44c8..182d207 100644
--- a/.github/workflows/k6-perf.yml
+++ b/.github/workflows/k6-perf.yml
@@ -10,22 +10,27 @@ jobs:
k6-perf:
runs-on: ubuntu-latest
- services:
- postgres:
- image: postgres:17-alpine
- env:
- POSTGRES_DB: performance_db
- POSTGRES_USER: postgres
- POSTGRES_PASSWORD: postgres
- ports:
- - 5432:5432
- options: >-
- --health-cmd="pg_isready -U postgres" --health-interval=10s --health-timeout=5s --health-retries=5
-
steps:
- name: Checkout
uses: actions/checkout@v4
+ - name: Start PostgreSQL with Docker Compose
+ run: docker compose up -d
+ env:
+ POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
+
+ - name: Wait for PostgreSQL to be ready
+ run: |
+ for i in {1..30}; do
+ if docker compose exec -T postgres pg_isready -U postgres > /dev/null 2>&1; then
+ echo "PostgreSQL is ready";
+ exit 0;
+ fi;
+ echo "Waiting for PostgreSQL...";
+ sleep 2;
+ done
+ echo "PostgreSQL did not start in time" && exit 1
+
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
@@ -75,3 +80,6 @@ jobs:
kill $(cat app.pid) || true
fi
+ - name: Stop Docker Compose
+ if: always()
+ run: docker compose down -v
diff --git a/.gitignore b/.gitignore
index 667aaef..59a1d09 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,3 +31,7 @@ build/
### VS Code ###
.vscode/
+
+### Environment Variables ###
+.env
+
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..1ad897d
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,23 @@
+version: '3.8'
+
+services:
+ postgres:
+ image: postgres:17-alpine
+ container_name: performance-postgres
+ environment:
+ POSTGRES_DB: performance_db
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
+ ports:
+ - "5432:5432"
+ volumes:
+ - postgres_data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+
+volumes:
+ postgres_data:
+
diff --git a/pom.xml b/pom.xml
index b01fdac..ca07242 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,45 +32,33 @@
org.springframework.boot
- spring-boot-starter-graphql
+ spring-boot-starter-jdbc
- org.springframework.boot
- spring-boot-starter-webmvc
+ org.projectlombok
+ lombok
+ provided
org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- org.postgresql
- postgresql
- runtime
-
-
- org.liquibase
- liquibase-core
+ spring-boot-starter-webmvc
-
- org.projectlombok
- lombok
- true
+ org.springframework.boot
+ spring-boot-starter-liquibase
org.springframework.boot
- spring-boot-starter-graphql-test
- test
+ spring-boot-starter-data-jpa
org.springframework.boot
- spring-boot-starter-webmvc-test
- test
+ spring-boot-starter-test
- org.projectlombok
- lombok
- provided
+ org.postgresql
+ postgresql
+ runtime
@@ -100,21 +88,6 @@
-
- org.liquibase
- liquibase-maven-plugin
-
- src/main/resources/application.properties
- src/main/resources/db/changelog/db.changelog-master.yaml
-
-
-
- org.postgresql
- postgresql
- ${postgresql.version}
-
-
-
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 75b267f..f3061ec 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -3,20 +3,19 @@ spring.application.name=k6-performance-test-poc
# PostgreSQL Configuration
spring.datasource.url=jdbc:postgresql://localhost:5432/performance_db
spring.datasource.username=postgres
-spring.datasource.password=postgres
+spring.datasource.password=${POSTGRES_PASSWORD:postgres}
spring.datasource.driver-class-name=org.postgresql.Driver
# JPA Configuration
-spring.jpa.hibernate.ddl-auto=validate
+spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.format_sql=true
# Liquibase Configuration
-spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.yaml
spring.liquibase.enabled=true
-spring.liquibase.drop-first=false
+spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml
# Logging
-logging.level.liquibase=INFO
+logging.level.liquibase=info
logging.level.org.hibernate=INFO
diff --git a/src/main/resources/db/changelog/changes/001-create-products-table.xml b/src/main/resources/db/changelog/changes/001-create-products-table.xml
new file mode 100644
index 0000000..7b99e2c
--- /dev/null
+++ b/src/main/resources/db/changelog/changes/001-create-products-table.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/db/changelog/changes/001-create-products-table.yaml b/src/main/resources/db/changelog/changes/001-create-products-table.yaml
deleted file mode 100644
index d317759..0000000
--- a/src/main/resources/db/changelog/changes/001-create-products-table.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-databaseChangeLog:
- - changeSet:
- id: 001-create-products-table
- author: performance-poc
- changes:
- - createTable:
- tableName: products
- columns:
- - column:
- name: id
- type: BIGSERIAL
- constraints:
- primaryKey: true
- nullable: false
- - column:
- name: name
- type: VARCHAR(255)
- constraints:
- nullable: false
- - column:
- name: description
- type: TEXT
- - column:
- name: price
- type: DECIMAL(19,2)
- constraints:
- nullable: false
- - column:
- name: quantity
- type: INTEGER
- constraints:
- nullable: false
- - column:
- name: created_at
- type: TIMESTAMP
- constraints:
- nullable: false
- - column:
- name: updated_at
- type: TIMESTAMP
- constraints:
- nullable: false
- - createIndex:
- indexName: idx_products_name
- tableName: products
- columns:
- - column:
- name: name
- rollback:
- - dropIndex:
- indexName: idx_products_name
- tableName: products
- - dropTable:
- tableName: products
-
diff --git a/src/main/resources/db/changelog/changes/002-insert-sample-products.xml b/src/main/resources/db/changelog/changes/002-insert-sample-products.xml
new file mode 100644
index 0000000..e03ddb6
--- /dev/null
+++ b/src/main/resources/db/changelog/changes/002-insert-sample-products.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+ name IN ('Laptop', 'Wireless Mouse', 'Mechanical Keyboard')
+
+
+
+
+
+
diff --git a/src/main/resources/db/changelog/changes/002-insert-sample-products.yaml b/src/main/resources/db/changelog/changes/002-insert-sample-products.yaml
deleted file mode 100644
index 2bea8fa..0000000
--- a/src/main/resources/db/changelog/changes/002-insert-sample-products.yaml
+++ /dev/null
@@ -1,73 +0,0 @@
-databaseChangeLog:
- - changeSet:
- id: 002-insert-sample-products
- author: performance-poc
- changes:
- - insert:
- tableName: products
- columns:
- - column:
- name: name
- value: "Laptop"
- - column:
- name: description
- value: "High-performance laptop for developers"
- - column:
- name: price
- valueNumeric: 1299.99
- - column:
- name: quantity
- valueNumeric: 10
- - column:
- name: created_at
- valueDate: now()
- - column:
- name: updated_at
- valueDate: now()
- - insert:
- tableName: products
- columns:
- - column:
- name: name
- value: "Wireless Mouse"
- - column:
- name: description
- value: "Ergonomic wireless mouse"
- - column:
- name: price
- valueNumeric: 29.99
- - column:
- name: quantity
- valueNumeric: 50
- - column:
- name: created_at
- valueDate: now()
- - column:
- name: updated_at
- valueDate: now()
- - insert:
- tableName: products
- columns:
- - column:
- name: name
- value: "Mechanical Keyboard"
- - column:
- name: description
- value: "RGB mechanical keyboard with blue switches"
- - column:
- name: price
- valueNumeric: 149.99
- - column:
- name: quantity
- valueNumeric: 25
- - column:
- name: created_at
- valueDate: now()
- - column:
- name: updated_at
- valueDate: now()
- rollback:
- - delete:
- tableName: products
- where: name IN ('Laptop', 'Wireless Mouse', 'Mechanical Keyboard')
-
diff --git a/src/main/resources/db/changelog/db.changelog-master.xml b/src/main/resources/db/changelog/db.changelog-master.xml
new file mode 100644
index 0000000..77acc92
--- /dev/null
+++ b/src/main/resources/db/changelog/db.changelog-master.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml
deleted file mode 100644
index 58d0f91..0000000
--- a/src/main/resources/db/changelog/db.changelog-master.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-databaseChangeLog:
- - include:
- file: db/changelog/changes/001-create-products-table.yaml
- - include:
- file: db/changelog/changes/002-insert-sample-products.yaml
-
diff --git a/src/main/resources/db/sql/002-insert-sample-products.sql b/src/main/resources/db/sql/002-insert-sample-products.sql
new file mode 100644
index 0000000..f8927f3
--- /dev/null
+++ b/src/main/resources/db/sql/002-insert-sample-products.sql
@@ -0,0 +1,607 @@
+-- Insert sample products for performance testing
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Laptop', 'High-performance laptop for developers', 1299.99, 10, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Wireless Mouse', 'Ergonomic wireless mouse', 29.99, 50, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Mechanical Keyboard', 'RGB mechanical keyboard with blue switches', 149.99, 25, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('USB-C Hub', '7-in-1 USB-C hub with HDMI and ethernet', 49.99, 35, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Monitor 27"', '4K UHD 27-inch monitor with IPS panel', 399.99, 15, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Webcam HD', '1080p HD webcam with auto-focus', 79.99, 40, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Lamp', 'LED desk lamp with adjustable brightness', 34.99, 60, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Headphones', 'Noise-cancelling over-ear headphones', 199.99, 30, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('External SSD 1TB', 'Portable external SSD with 1TB storage', 119.99, 45, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Gaming Chair', 'Ergonomic gaming chair with lumbar support', 249.99, 20, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Microphone', 'USB condenser microphone for streaming', 89.99, 25, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Tablet 10"', '10-inch tablet with 128GB storage', 329.99, 18, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Smartphone', '5G smartphone with 256GB storage', 799.99, 12, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Smartwatch', 'Fitness smartwatch with heart rate monitor', 199.99, 28, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Wireless Earbuds', 'True wireless earbuds with charging case', 149.99, 55, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Portable Charger', '20000mAh power bank with fast charging', 39.99, 70, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('HDMI Cable 2m', 'High-speed HDMI 2.1 cable', 19.99, 100, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Graphics Card', 'High-end graphics card for gaming', 599.99, 8, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('RAM 16GB', 'DDR4 16GB RAM stick 3200MHz', 69.99, 42, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('SSD 500GB', 'NVMe M.2 SSD 500GB', 59.99, 38, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Motherboard', 'ATX motherboard with WiFi', 179.99, 15, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('CPU Cooler', 'RGB CPU cooler with 120mm fan', 44.99, 32, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Power Supply', '750W modular power supply 80+ Gold', 109.99, 22, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('PC Case', 'Mid-tower ATX case with tempered glass', 89.99, 18, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Monitor Arm', 'Dual monitor arm stand', 69.99, 27, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Keyboard Wrist Rest', 'Memory foam keyboard wrist rest', 14.99, 75, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Mouse Pad XL', 'Extended gaming mouse pad', 24.99, 65, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Cable Management Kit', 'Cable management sleeves and clips', 16.99, 80, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Laptop Stand', 'Aluminum laptop stand with cooling', 39.99, 44, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Docking Station', 'Universal laptop docking station', 159.99, 16, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Bluetooth Speaker', 'Portable waterproof Bluetooth speaker', 59.99, 48, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Security Camera', 'WiFi security camera with night vision', 79.99, 33, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Smart Bulb', 'RGB smart LED bulb', 19.99, 90, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Router WiFi 6', 'Dual-band WiFi 6 router', 129.99, 24, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Network Switch', '8-port gigabit network switch', 49.99, 36, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('UPS Battery Backup', '1500VA UPS with surge protection', 149.99, 14, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Printer', 'Wireless all-in-one inkjet printer', 179.99, 19, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Scanner', 'Portable document scanner', 99.99, 21, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Drawing Tablet', 'Graphics drawing tablet with pen', 249.99, 13, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('VR Headset', 'Virtual reality headset', 399.99, 9, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Drone', 'Camera drone with 4K video', 499.99, 7, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Action Camera', 'Waterproof 4K action camera', 199.99, 17, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Tripod', 'Professional camera tripod', 79.99, 26, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Ring Light', 'LED ring light for video', 49.99, 39, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Green Screen', 'Collapsible green screen backdrop', 69.99, 22, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Capture Card', 'HD video capture card for streaming', 139.99, 15, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Stream Deck', 'Customizable stream deck controller', 149.99, 11, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('USB Hub', '10-port USB 3.0 hub', 34.99, 41, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Ethernet Cable 10m', 'Cat 6 ethernet cable', 15.99, 95, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Office Chair', 'Ergonomic mesh office chair with adjustable arms', 279.99, 14, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Standing Desk', 'Electric height-adjustable standing desk', 449.99, 9, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Organizer', 'Bamboo desk organizer with charging station', 34.99, 52, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Whiteboard', 'Magnetic dry-erase whiteboard 48x36', 89.99, 16, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Noise Machine', 'White noise machine for better focus', 44.99, 38, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Footrest', 'Adjustable ergonomic footrest', 29.99, 47, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Cable Tray', 'Under desk cable management tray', 22.99, 61, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Monitor Light Bar', 'E-reading LED monitor light bar', 79.99, 29, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Laptop Backpack', 'Water-resistant laptop backpack with USB port', 49.99, 43, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Wireless Presenter', 'Wireless presenter remote with laser pointer', 24.99, 56, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Document Camera', 'HD document camera for presentations', 199.99, 11, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Conference Speaker', 'Bluetooth speakerphone for video calls', 149.99, 23, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Webcam Privacy Cover', 'Sliding webcam privacy cover 3-pack', 8.99, 150, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Blue Light Glasses', 'Computer glasses with blue light filtering', 29.99, 68, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Surge Protector', '12-outlet surge protector with USB ports', 39.99, 54, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Label Maker', 'Bluetooth label maker with rechargeable battery', 69.99, 27, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Paper Shredder', 'Cross-cut paper shredder for home office', 79.99, 18, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Fan', 'USB desk fan with adjustable speed', 19.99, 72, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Mini Fridge', 'Compact mini fridge for office', 129.99, 8, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Air Purifier', 'HEPA air purifier for desk', 89.99, 31, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Pad', 'Large leather desk pad protector', 34.99, 59, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Monitor Privacy Screen', '24-inch monitor privacy filter', 44.99, 36, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Pen Holder', 'Rotating mesh pen holder with drawer', 16.99, 83, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Calculator', 'Scientific calculator with large display', 24.99, 64, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Stapler', 'Heavy-duty stapler with staple remover', 18.99, 77, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Tape Dispenser', 'Weighted tape dispenser with non-slip base', 12.99, 89, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('File Cabinet', '2-drawer locking file cabinet', 159.99, 12, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Bookshelf', '5-tier wooden bookshelf', 119.99, 15, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Floor Mat', 'Anti-fatigue standing desk mat', 39.99, 42, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Task Light', 'LED clamp task light with dimmer', 32.99, 48, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Wireless Charger', 'Fast wireless charging pad', 24.99, 66, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Phone Stand', 'Adjustable phone stand for desk', 14.99, 91, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Tablet Sleeve', 'Protective tablet sleeve with pocket', 19.99, 58, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Screen Cleaner Kit', 'Screen cleaning spray and microfiber cloths', 12.99, 102, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Compressed Air Duster', 'Electric compressed air duster', 34.99, 45, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Anti-Static Wrist Strap', 'ESD anti-static wrist strap', 9.99, 73, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Screwdriver Set', 'Precision screwdriver set 25-piece', 19.99, 55, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Cable Clips', 'Adhesive cable clips organizer 50-pack', 7.99, 128, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Velcro Cable Ties', 'Reusable cable ties 100-pack', 11.99, 97, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Webcam Cover Slide', 'Ultra-thin webcam cover for laptops 6-pack', 6.99, 145, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Laptop Cooling Pad', 'Laptop cooling pad with 5 fans', 29.99, 37, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Gaming Mouse', 'RGB gaming mouse with programmable buttons', 59.99, 34, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Gaming Headset', 'Surround sound gaming headset with mic', 89.99, 28, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Mousepad RGB', 'Large RGB gaming mousepad', 39.99, 49, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Controller', 'Wireless game controller for PC', 49.99, 32, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Racing Wheel', 'Force feedback racing wheel and pedals', 299.99, 6, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Flight Stick', 'USB flight joystick for simulators', 79.99, 19, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Mechanical Numpad', 'Wireless mechanical numpad', 44.99, 41, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Keycap Set', 'PBT keycap set for mechanical keyboards', 39.99, 26, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Switch Tester', 'Mechanical keyboard switch tester kit', 14.99, 62, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Shelf Organizer', 'Monitor stand with desk organizer', 54.99, 30, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Ergonomic Mouse', 'Vertical ergonomic mouse for wrist comfort', 39.99, 46, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Trackball Mouse', 'Wireless trackball mouse with precision', 54.99, 33, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Presentation Clicker', 'Remote presentation pointer with timer', 29.99, 51, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Digital Notepad', 'Smart digital notepad with cloud sync', 129.99, 19, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('E-Reader', '7-inch e-ink reader with backlight', 139.99, 25, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Portable Monitor', '15.6-inch portable USB-C monitor', 199.99, 22, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Ultrawide Monitor', '34-inch curved ultrawide monitor', 549.99, 11, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Monitor Calibrator', 'Professional monitor color calibrator', 169.99, 8, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Light Therapy Lamp', '10000 Lux therapy lamp for desk', 49.99, 37, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Humidifier', 'USB desk humidifier with LED light', 24.99, 63, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Coffee Warmer', 'Electric mug warmer for desk', 19.99, 71, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Insulated Tumbler', 'Stainless steel insulated tumbler 30oz', 29.99, 85, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Water Bottle', 'Smart water bottle with hydration tracking', 44.99, 41, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Posture Corrector', 'Adjustable back posture corrector', 24.99, 56, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Lumbar Support', 'Memory foam lumbar support cushion', 34.99, 49, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Seat Cushion', 'Gel-infused memory foam seat cushion', 39.99, 44, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Balance Ball Chair', 'Yoga ball chair with back support', 69.99, 17, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Kneeling Chair', 'Ergonomic kneeling chair', 119.99, 13, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Saddle Stool', 'Adjustable saddle seat stool', 89.99, 16, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Drafting Chair', 'Tall drafting chair for standing desk', 159.99, 12, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Conference Chair', 'Executive conference room chair', 189.99, 20, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Folding Table', 'Portable folding table for workspace', 79.99, 24, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Corner Desk', 'L-shaped corner computer desk', 229.99, 14, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Writing Desk', 'Minimalist writing desk with drawer', 169.99, 18, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Gaming Desk', 'RGB gaming desk with cable management', 299.99, 10, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Converter', 'Standing desk converter riser', 139.99, 21, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Monitor Shelf', 'Wooden monitor stand shelf', 29.99, 57, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Drawer Organizer', 'Expandable drawer organizer set', 18.99, 74, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desktop Shelf', 'Multi-tier desktop storage shelf', 44.99, 39, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Magazine Holder', 'Mesh desktop magazine holder', 14.99, 66, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Letter Tray', 'Stackable letter tray organizer 3-pack', 19.99, 69, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Business Card Holder', 'Professional business card holder desk', 12.99, 81, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Sticky Note Dispenser', 'Pop-up note dispenser for desk', 9.99, 93, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Pencil Sharpener', 'Electric pencil sharpener', 16.99, 58, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Hole Punch', '3-hole punch for documents', 14.99, 62, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Paper Clips Box', 'Assorted paper clips 500-count', 6.99, 112, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Binder Clips', 'Assorted binder clips 200-count', 8.99, 98, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Rubber Bands', 'Rubber bands assorted sizes 1lb', 7.99, 105, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Index Cards', 'Ruled index cards 500-count', 9.99, 87, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Sticky Notes Pack', 'Colorful sticky notes variety pack', 11.99, 94, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Legal Pads', 'Yellow legal pads 12-pack', 18.99, 76, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Notebook Set', 'Spiral notebooks 5-subject 3-pack', 14.99, 69, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Planner', 'Weekly planner organizer', 24.99, 52, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Daily Journal', 'Leather-bound daily journal', 34.99, 38, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Clipboard', 'Heavy-duty clipboard with storage', 12.99, 64, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Presentation Binder', '3-ring presentation binder with pockets', 16.99, 55, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Sheet Protectors', 'Clear sheet protectors 100-pack', 11.99, 78, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('File Folders', 'Manila file folders 100-count', 13.99, 82, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Hanging Folders', 'Hanging file folders 25-pack', 15.99, 71, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Document Box', 'Portable document storage box', 19.99, 48, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Laminator', 'Thermal laminator machine with pouches', 49.99, 29, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Binding Machine', 'Comb binding machine with combs', 69.99, 17, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Badge Holder', 'ID badge holder with lanyard 10-pack', 12.99, 86, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Name Tags', 'Self-adhesive name tags 200-count', 8.99, 101, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Address Labels', 'Printable address labels 3000-count', 14.99, 68, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Shipping Labels', 'Self-adhesive shipping labels 500-count', 16.99, 59, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Packing Tape', 'Heavy-duty packing tape 6-pack', 15.99, 73, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Scissors', 'Professional office scissors set', 13.99, 79, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Paper Trimmer', '12-inch paper trimmer with ruler', 24.99, 34, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Corner Rounder', 'Desktop corner rounding punch', 18.99, 42, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Envelope Sealer', 'Electric envelope sealer machine', 39.99, 23, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Postage Scale', 'Digital postal scale 55lb capacity', 34.99, 31, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Time Clock', 'Electronic time clock machine', 149.99, 9, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Cash Box', 'Locking cash box with tray', 24.99, 46, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Money Counter', 'Automatic bill counter machine', 179.99, 12, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Counterfeit Detector', 'UV counterfeit money detector', 29.99, 38, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Safe Box', 'Digital safe box for office', 89.99, 16, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Key Cabinet', 'Locking key cabinet 48-key capacity', 34.99, 27, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Wall Clock', 'Large wall clock silent movement', 29.99, 53, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Desk Clock', 'Digital desk clock with temperature', 19.99, 67, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Timer', 'Digital countdown timer for desk', 14.99, 61, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Calendar', 'Desk calendar with monthly planner', 16.99, 58, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Wall Calendar', '12-month wall calendar large format', 12.99, 72, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Dry Erase Markers', 'Chisel tip markers 12-pack assorted', 14.99, 84, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Highlighters', 'Fluorescent highlighters 24-pack', 11.99, 88, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Permanent Markers', 'Fine point permanent markers 12-pack', 9.99, 91, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Ballpoint Pens', 'Blue ballpoint pens 50-pack', 8.99, 96, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Gel Pens', 'Assorted color gel pens 30-pack', 16.99, 65, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Mechanical Pencils', 'Mechanical pencils 0.7mm 12-pack', 7.99, 99, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Colored Pencils', 'Professional colored pencils 48-count', 24.99, 43, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Art Markers', 'Dual-tip art markers 60-color set', 34.99, 28, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Fountain Pen', 'Classic fountain pen with ink cartridges', 44.99, 22, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Stylus Pen', 'Universal stylus pen for touchscreens', 18.99, 54, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Apple Pencil', 'Digital stylus for iPad', 129.99, 21, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Graphics Pen', 'Battery-free graphics pen replacement', 29.99, 35, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Eraser Pack', 'White vinyl erasers 12-pack', 6.99, 107, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Correction Tape', 'Quick-dry correction tape 10-pack', 9.99, 89, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Glue Sticks', 'Washable glue sticks 30-pack', 11.99, 85, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Liquid Glue', 'White school glue 1-gallon', 14.99, 51, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Super Glue', 'Precision super glue 12-pack', 12.99, 76, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Double-Sided Tape', 'Heavy-duty double-sided tape roll', 8.99, 92, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Washi Tape Set', 'Decorative washi tape 48-roll set', 19.99, 47, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Masking Tape', 'Painters masking tape 6-pack', 13.99, 68, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Duct Tape', 'Heavy-duty duct tape silver 3-pack', 16.99, 63, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Push Pins', 'Colorful push pins 500-count', 7.99, 103, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Thumbtacks', 'Clear thumbtacks 400-count', 6.99, 109, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Cork Board', 'Framed cork bulletin board 36x24', 29.99, 32, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Fabric Bulletin Board', 'Decorative fabric bulletin board', 34.99, 28, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Magnetic Board', 'Magnetic whiteboard 48x36', 79.99, 19, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Glass Board', 'Tempered glass dry-erase board', 119.99, 13, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Easel Pad', 'Flip chart easel pad 27x34 50-sheets', 24.99, 36, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
+INSERT INTO products (name, description, price, quantity, created_at, updated_at)
+VALUES ('Presentation Easel', 'Adjustable tripod presentation easel', 44.99, 15, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
+
diff --git a/src/test/java/com/k6performancetestpoc/k6/test.js b/src/test/java/com/k6performancetestpoc/k6/test.js
index efcd3da..b25e8f0 100644
--- a/src/test/java/com/k6performancetestpoc/k6/test.js
+++ b/src/test/java/com/k6performancetestpoc/k6/test.js
@@ -3,11 +3,11 @@ import { sleep, check } from 'k6';
// test configuration
export const options = {
- vus: 10, // simulate concurrent virtual users
+ vus: 400, // simulate concurrent virtual users
duration: '30s',
thresholds: {
- http_req_duration: ['p(95)<500'], // 95% of requests must complete under 500ms
+ http_req_duration: ['p(95)<200'], // 95% of requests must complete under 200ms
http_req_failed: ['rate<0.01'] // less than 1% request failure rate
}
};