-- Recovered from the original application schema; apply after data import.
ALTER TABLE `role_permissions` ADD CONSTRAINT `fk_role_permissions_permission_id` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE RESTRICT;
ALTER TABLE `wallets` ADD CONSTRAINT `fk_wallets_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `wallet_transactions` ADD CONSTRAINT `fk_wallet_transactions_wallet_id` FOREIGN KEY (`wallet_id`) REFERENCES `wallets` (`id`) ON DELETE CASCADE;
ALTER TABLE `payment_intents` ADD CONSTRAINT `fk_payment_intents_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `payment_intents` ADD CONSTRAINT `fk_payment_intents_wallet_id` FOREIGN KEY (`wallet_id`) REFERENCES `wallets` (`id`) ON DELETE RESTRICT;
ALTER TABLE `inventory_log` ADD CONSTRAINT `fk_inventory_log_product_id` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE RESTRICT;
ALTER TABLE `orders` ADD CONSTRAINT `fk_orders_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `order_items` ADD CONSTRAINT `fk_order_items_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE CASCADE;
ALTER TABLE `api_keys` ADD CONSTRAINT `fk_api_keys_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `sms_numbers` ADD CONSTRAINT `fk_sms_numbers_provider_id` FOREIGN KEY (`provider_id`) REFERENCES `sms_providers` (`id`) ON DELETE RESTRICT;
ALTER TABLE `sms_allocations` ADD CONSTRAINT `fk_sms_allocations_number_id` FOREIGN KEY (`number_id`) REFERENCES `sms_numbers` (`id`) ON DELETE RESTRICT;
ALTER TABLE `sms_allocations` ADD CONSTRAINT `fk_sms_allocations_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `sms_messages` ADD CONSTRAINT `fk_sms_messages_allocation_id` FOREIGN KEY (`allocation_id`) REFERENCES `sms_allocations` (`id`) ON DELETE RESTRICT;
ALTER TABLE `admin_withdrawals` ADD CONSTRAINT `fk_admin_withdrawals_admin_id` FOREIGN KEY (`admin_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `notifications` ADD CONSTRAINT `fk_notifications_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `social_accounts` ADD CONSTRAINT `fk_social_accounts_type_id` FOREIGN KEY (`type_id`) REFERENCES `social_account_types` (`id`) ON DELETE RESTRICT;
ALTER TABLE `social_accounts` ADD CONSTRAINT `fk_social_accounts_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `social_account_events` ADD CONSTRAINT `fk_social_account_events_account_id` FOREIGN KEY (`account_id`) REFERENCES `social_accounts` (`id`) ON DELETE CASCADE;
ALTER TABLE `bank_accounts` ADD CONSTRAINT `fk_bank_accounts_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
ALTER TABLE `platform_transactions` ADD CONSTRAINT `fk_platform_transactions_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `boost_orders` ADD CONSTRAINT `fk_boost_orders_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `boost_orders` ADD CONSTRAINT `fk_boost_orders_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE RESTRICT;
ALTER TABLE `boost_orders` ADD CONSTRAINT `fk_boost_orders_service_id` FOREIGN KEY (`service_id`) REFERENCES `boost_services` (`id`) ON DELETE RESTRICT;
ALTER TABLE `account_orders` ADD CONSTRAINT `fk_account_orders_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE RESTRICT;
ALTER TABLE `account_orders` ADD CONSTRAINT `fk_account_orders_order_id` FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`) ON DELETE RESTRICT;
ALTER TABLE wallets ADD CONSTRAINT ck_wallet_nonnegative CHECK (balance >= 0);
ALTER TABLE platform_wallet ADD CONSTRAINT ck_platform_singleton CHECK (id = 1);
