-- =====================================================================
-- pay.ezcalls.com adapter — restricted MySQL user
-- =====================================================================
-- The adapter can only EXECUTE the procedures below. It cannot SELECT,
-- INSERT, UPDATE or DELETE any table directly. The procedures run with
-- their definer's rights (SQL SECURITY DEFINER, the default).
--
-- Before running:
--   1. Replace ADAPTER_HOST with the host the adapter connects from
--      ('localhost' if it runs on the database server).
--   2. Replace CHANGE_ME with a generated password, e.g.
--        openssl rand -base64 36
--      and put the same value in config/config.php on the adapter.
-- =====================================================================

CREATE USER IF NOT EXISTS 'afd_adapter'@'ADAPTER_HOST' IDENTIFIED BY 'CHANGE_ME';

-- New afd_ procedures
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_Idempotency_Begin`            TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_Idempotency_Complete`         TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_Idempotency_Abandon`          TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_ApiReplay_Check`              TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_Account_Insert`               TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_InsertTransactionLog`         TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_ReleaseHeldCredit`            TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_PhoneVerification_Insert`     TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_PaymentLink_Insert`           TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`afd_PaymentLink_SelectByPublicID` TO 'afd_adapter'@'ADAPTER_HOST';

-- Existing procedures, reused unchanged
GRANT EXECUTE ON PROCEDURE `prepaid`.`CheckPin`                         TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_Account_Select`                TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_IsActive`                      TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_ExceededDeclinedTransactions`  TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`csivr_GetLastRefNumberBT`         TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`telnyx_CheckRechargeEligibility`  TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_UpdateTransactionLog_BT`       TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_InsertTransaction`             TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_Rate_Select`                   TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_cmbRechargeAmount_Select`      TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_AutoRechargeSave`              TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_ANI_CheckAvailability`         TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_ANI_Insert`                    TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_ANI_ResolveID`                 TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_ANI_MarkVerified`              TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`ez_ANI_Delete`                    TO 'afd_adapter'@'ADAPTER_HOST';
GRANT EXECUTE ON PROCEDURE `prepaid`.`CSIVR_Credit`                     TO 'afd_adapter'@'ADAPTER_HOST';

FLUSH PRIVILEGES;
