Class: TrustcommerceSyncAgent
- Inherits:
-
Object
- Object
- TrustcommerceSyncAgent
- Defined in:
- lib/trustcommerce_sync_agent.rb
Overview
This agent will pull down recent transactions from the TrustCommerce vault using the following schema:
create_table :subscriptions do |t|
t.column :account_id, :integer, :null => false
t.column :created_on, :datetime, :null => false
t.column :billing_id, :string
t.column :length, :integer, :null => false
t.column :cents, :integer, :null => false
t.column :billing_full_name, :string
t.column :billing_address, :string
t.column :billing_zip_code, :string
t.column :billing_country, :string
t.column :billing_card_type, :string
t.column :billing_credit_card, :string
t.column :billing_expiration_date, :datetime
end
add_index :subscriptions, :account_id
create_table :subscription_transactions do |t|
t.column :subscription_id, :integer, :null => false
t.column :account_id, :integer, :null => false
t.column :transaction_date, :datetime, :null => false
t.column :transaction_id, :string, :null => false
t.column :transaction_type, :string, :null => false
t.column :amount, :decimal, :null => false
t.column :card_number, :string, :null => false
t.column :card_type, :string, :null => false
t.column :cardholder_name, :string, :null => false
end
add_index :subscription_transactions, :subscription_id
add_index :subscription_transactions, :account_id
Install as cron job or test it out on the console:
$ ./script/runner -e production “TrustcommerceSyncAgent.sync(‘3h’)”
Class Method Summary collapse
-
.sync(time_ago = nil) ⇒ Object
time_ago examples: 30m => 30 minutes 1h => 1 hour 3d => 3 days.
Class Method Details
.sync(time_ago = nil) ⇒ Object
time_ago examples:
30m => 30 minutes
1h => 1 hour
3d => 3 days
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/trustcommerce_sync_agent.rb', line 47 def self.sync(time_ago = nil) time = case time_ago when /^(\d+)m$/ then Time.now.utc - $1.to_i.minute when /^(\d+)h$/ then Time.now.utc - $1.to_i.hour when /^(\d+)d$/ then Time.now.utc - $1.to_i.day else Time.now.utc - 1.hour end # --- [ find recently created paying subscriptions ] --- subscriptions = Subscription.find(:all, :conditions => ['cents > 0 AND created_on > ?', time]) subscriptions.each do |subscription| sync_subscription(subscription) end end |