# frozen_string_literal: true class AutoTopUpRepo def initialize(redis: REDIS, db: DB) @redis = redis @db = db end def find(customer_id) redis(:get, customer_id) end def put(customer_id, amount) if amount >= 15 redis(:set, customer_id, amount) reset_low_balance_lock(customer_id) @db.exec_params( "SELECT check_and_notify_low_balance($1)", [customer_id] ) elsif amount.zero? redis(:del, customer_id) end end protected def redis(action, customer_id, *args) @redis.public_send( action, "jmp_customer_auto_top_up_amount-#{customer_id}", *args ) end def reset_low_balance_lock(customer_id) @redis.del("jmp_customer_low_balance-#{customer_id}") end end