iKhokha integration complete
This commit is contained in:
61
scripts/ikhokha_migrations/001_add_payment_columns.sql
Normal file
61
scripts/ikhokha_migrations/001_add_payment_columns.sql
Normal file
@@ -0,0 +1,61 @@
|
||||
-- Migration: add iKhokha / provider metadata to payments table
|
||||
-- Migration: add iKhokha / provider metadata to payments table
|
||||
-- Compatible with MySQL versions that do not support `ADD COLUMN IF NOT EXISTS`.
|
||||
-- Run on staging first. Make a DB backup before running on production.
|
||||
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE add_payment_columns_if_missing()
|
||||
BEGIN
|
||||
-- provider
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND COLUMN_NAME = 'provider') = 0 THEN
|
||||
ALTER TABLE `payments` ADD COLUMN `provider` VARCHAR(50) NULL AFTER `status`;
|
||||
END IF;
|
||||
|
||||
-- provider_payment_id
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND COLUMN_NAME = 'provider_payment_id') = 0 THEN
|
||||
ALTER TABLE `payments` ADD COLUMN `provider_payment_id` VARCHAR(128) NULL AFTER `provider`;
|
||||
END IF;
|
||||
|
||||
-- payment_link
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND COLUMN_NAME = 'payment_link') = 0 THEN
|
||||
ALTER TABLE `payments` ADD COLUMN `payment_link` VARCHAR(512) NULL AFTER `provider_payment_id`;
|
||||
END IF;
|
||||
|
||||
-- provider_status
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND COLUMN_NAME = 'provider_status') = 0 THEN
|
||||
ALTER TABLE `payments` ADD COLUMN `provider_status` VARCHAR(50) NULL AFTER `payment_link`;
|
||||
END IF;
|
||||
|
||||
-- provider_response (JSON)
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND COLUMN_NAME = 'provider_response') = 0 THEN
|
||||
ALTER TABLE `payments` ADD COLUMN `provider_response` JSON NULL AFTER `provider_status`;
|
||||
END IF;
|
||||
|
||||
-- booking_id
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND COLUMN_NAME = 'booking_id') = 0 THEN
|
||||
ALTER TABLE `payments` ADD COLUMN `booking_id` INT NULL AFTER `user_id`;
|
||||
END IF;
|
||||
|
||||
-- index idx_provider_payment_id
|
||||
IF (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'payments' AND INDEX_NAME = 'idx_provider_payment_id') = 0 THEN
|
||||
ALTER TABLE `payments` ADD INDEX `idx_provider_payment_id` (`provider_payment_id`(128));
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL add_payment_columns_if_missing();
|
||||
DROP PROCEDURE IF EXISTS add_payment_columns_if_missing;
|
||||
|
||||
-- Notes:
|
||||
-- 1) This script creates a short stored procedure which performs existence checks
|
||||
-- against INFORMATION_SCHEMA before applying each ALTER TABLE. Run in the
|
||||
-- MySQL client or via your migration tool. It avoids syntax not supported on
|
||||
-- older MySQL versions.
|
||||
-- 2) Test on staging and make a DB dump before running on production.
|
||||
14
scripts/ikhokha_migrations/002_migrate_efts_to_payments.sql
Normal file
14
scripts/ikhokha_migrations/002_migrate_efts_to_payments.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
-- Migration: copy existing efts records into payments for historical continuity
|
||||
-- This inserts EFT records into payments table as payments with provider='eft'.
|
||||
-- Run only after verifying step 001 has been applied and a backup exists.
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
INSERT IGNORE INTO `payments` (`payment_id`, `user_id`, `amount`, `status`, `date`, `description`, `provider`, `provider_payment_id`, `provider_status`)
|
||||
SELECT `eft_id`, `user_id`, `amount`, `status`, `timestamp`, `description`, 'eft', `eft_id`, `status` FROM `efts`;
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Notes:
|
||||
-- 1) `INSERT IGNORE` prevents duplicate primary-key errors (payments.payment_id is PK).
|
||||
-- 2) After running, review migrated rows and ensure admin workflows still operate.
|
||||
21
scripts/ikhokha_migrations/README.md
Normal file
21
scripts/ikhokha_migrations/README.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# iKhokha Migration SQL
|
||||
|
||||
This folder contains SQL migration files to add iKhokha/provider metadata to the `payments` table and to migrate legacy `efts` records.
|
||||
|
||||
Order to run:
|
||||
|
||||
1. Backup your database (mysqldump or preferred tool).
|
||||
2. Apply `001_add_payment_columns.sql` on staging and verify schema changes.
|
||||
3. (Optional) Apply `002_migrate_efts_to_payments.sql` to copy legacy `efts` into `payments`.
|
||||
|
||||
Commands (example using MySQL client):
|
||||
|
||||
```bash
|
||||
mysql -u dbuser -p databasename < scripts/ikhokha_migrations/001_add_payment_columns.sql
|
||||
mysql -u dbuser -p databasename < scripts/ikhokha_migrations/002_migrate_efts_to_payments.sql
|
||||
```
|
||||
|
||||
Notes:
|
||||
- Always test on staging before running in production.
|
||||
- `provider_response` is a JSON column used to store raw provider responses for audit.
|
||||
- If you prefer not to migrate `efts`, skip step 3 and keep legacy POP handling.
|
||||
Reference in New Issue
Block a user