diff --git a/backend/src/main/resources/db/migration/V12__backfill_user_accounts.sql b/backend/src/main/resources/db/migration/V12__backfill_user_accounts.sql new file mode 100644 index 00000000..4af69669 --- /dev/null +++ b/backend/src/main/resources/db/migration/V12__backfill_user_accounts.sql @@ -0,0 +1,91 @@ +INSERT INTO users (username, password, email, fullName, phone, role, active, tokenVersion) +SELECT + CONCAT('customer_', c.customerId) AS username, + '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq' AS password, + CASE + WHEN c.email IS NOT NULL + AND c.email <> '' + AND (SELECT COUNT(*) FROM customer c2 WHERE c2.email = c.email) = 1 + AND NOT EXISTS (SELECT 1 FROM employee e2 WHERE e2.email = c.email) + AND NOT EXISTS (SELECT 1 FROM users u WHERE u.email = c.email) + THEN c.email + ELSE CONCAT('customer_', c.customerId, '@petshop.local') + END AS email, + CONCAT(c.firstName, ' ', c.lastName) AS fullName, + CONCAT('200-000-', LPAD(c.customerId, 4, '0')) AS phone, + 'CUSTOMER' AS role, + FALSE AS active, + 0 AS tokenVersion +FROM customer c +WHERE c.user_id IS NULL + AND NOT EXISTS ( + SELECT 1 + FROM users u + WHERE u.username = CONCAT('customer_', c.customerId) + ); + +INSERT INTO users (username, password, email, fullName, phone, role, active, tokenVersion) +SELECT + CONCAT('employee_', e.employeeId) AS username, + '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq' AS password, + CASE + WHEN e.email IS NOT NULL + AND e.email <> '' + AND (SELECT COUNT(*) FROM employee e2 WHERE e2.email = e.email) = 1 + AND NOT EXISTS (SELECT 1 FROM customer c2 WHERE c2.email = e.email) + AND NOT EXISTS (SELECT 1 FROM users u WHERE u.email = e.email) + THEN e.email + ELSE CONCAT('employee_', e.employeeId, '@petshop.local') + END AS email, + CONCAT(e.firstName, ' ', e.lastName) AS fullName, + CONCAT('300-000-', LPAD(e.employeeId, 4, '0')) AS phone, + CASE + WHEN UPPER(e.role) = 'MANAGER' THEN 'ADMIN' + ELSE 'STAFF' + END AS role, + FALSE AS active, + 0 AS tokenVersion +FROM employee e +WHERE e.user_id IS NULL + AND NOT EXISTS ( + SELECT 1 + FROM users u + WHERE u.username = CONCAT('employee_', e.employeeId) + ); + +UPDATE customer c +JOIN users u ON u.username = CONCAT('customer_', c.customerId) + AND u.role = 'CUSTOMER' +SET c.user_id = u.id +WHERE c.user_id IS NULL; + +UPDATE employee e +JOIN users u ON u.username = CONCAT('employee_', e.employeeId) + AND u.role IN ('STAFF', 'ADMIN') +SET e.user_id = u.id +WHERE e.user_id IS NULL; + +UPDATE users +SET + fullName = CASE + WHEN fullName IS NULL OR fullName = '' THEN username + ELSE fullName + END, + email = CASE + WHEN email IS NULL OR email = '' THEN CONCAT(username, '@petshop.local') + ELSE email + END, + phone = CASE + WHEN phone IS NULL OR phone = '' THEN CONCAT('000-000-', LPAD(id, 4, '0')) + ELSE phone + END, + active = COALESCE(active, TRUE), + tokenVersion = COALESCE(tokenVersion, 0) +WHERE fullName IS NULL + OR fullName = '' + OR email IS NULL + OR email = '' + OR phone IS NULL + OR phone = '' + OR active IS NULL + OR tokenVersion IS NULL; diff --git a/backend/src/main/resources/db/migration/V13__remove_debit_payment_method.sql b/backend/src/main/resources/db/migration/V13__remove_debit_payment_method.sql new file mode 100644 index 00000000..874b0205 --- /dev/null +++ b/backend/src/main/resources/db/migration/V13__remove_debit_payment_method.sql @@ -0,0 +1,3 @@ +UPDATE sale +SET paymentMethod = 'Card' +WHERE LOWER(paymentMethod) = 'debit';