payola-payments 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/payola/checkout_button.js +8 -1
  3. data/app/assets/javascripts/payola/subscription_form_onestep.js +13 -2
  4. data/app/assets/javascripts/payola/subscription_form_twostep.js +10 -1
  5. data/app/controllers/concerns/payola/async_behavior.rb +14 -5
  6. data/app/controllers/payola/subscriptions_controller.rb +16 -3
  7. data/app/controllers/payola/transactions_controller.rb +1 -1
  8. data/app/models/concerns/payola/plan.rb +1 -1
  9. data/app/models/payola/subscription.rb +7 -1
  10. data/app/services/payola/change_subscription_quantity.rb +25 -0
  11. data/app/services/payola/charge_card.rb +8 -4
  12. data/app/services/payola/create_subscription.rb +1 -0
  13. data/app/services/payola/start_subscription.rb +48 -12
  14. data/app/views/payola/subscriptions/_change_plan.html.erb +1 -1
  15. data/config/database.yml.ci +6 -0
  16. data/config/routes.rb +1 -0
  17. data/db/migrate/20141213205847_add_active_to_payola_coupon.rb +5 -0
  18. data/lib/payola.rb +4 -4
  19. data/lib/payola/engine.rb +1 -1
  20. data/lib/payola/version.rb +1 -1
  21. data/lib/payola/worker.rb +1 -1
  22. data/spec/concerns/plan_spec.rb +9 -0
  23. data/spec/concerns/sellable_spec.rb +1 -1
  24. data/spec/controllers/payola/subscriptions_controller_spec.rb +41 -13
  25. data/spec/controllers/payola/transactions_controller_spec.rb +7 -5
  26. data/spec/dummy/app/models/user.rb +2 -0
  27. data/spec/dummy/app/views/subscribe/index.html.erb +2 -0
  28. data/spec/dummy/config/environments/test.rb +5 -1
  29. data/spec/dummy/db/development.sqlite3 +0 -0
  30. data/spec/dummy/db/migrate/20141204170622_create_users.rb +8 -0
  31. data/spec/dummy/db/schema.rb +16 -10
  32. data/spec/dummy/db/test.sqlite3 +0 -0
  33. data/spec/dummy/log/development.log +131 -0
  34. data/spec/dummy/log/test.log +75119 -0
  35. data/spec/factories/subscription_plan.rb +2 -2
  36. data/spec/mailers/payola/receipt_mailer_spec.rb +6 -1
  37. data/spec/models/payola/coupon_spec.rb +27 -0
  38. data/spec/payola_spec.rb +2 -2
  39. data/spec/services/payola/change_subscription_plan_spec.rb +0 -1
  40. data/spec/services/payola/change_subscription_quantity_spec.rb +29 -0
  41. data/spec/services/payola/charge_card_spec.rb +9 -0
  42. data/spec/services/payola/start_subscription_spec.rb +37 -0
  43. data/spec/worker_spec.rb +1 -1
  44. metadata +15 -4
@@ -1,3 +1,3 @@
1
1
  module Payola
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.3"
3
3
  end
data/lib/payola/worker.rb CHANGED
@@ -28,7 +28,7 @@ module Payola
28
28
  end
29
29
  end
30
30
 
31
- raise "No eligable background worker systems found."
31
+ raise "No eligible background worker systems found."
32
32
  end
33
33
  end
34
34
 
@@ -34,5 +34,14 @@ module Payola
34
34
  subscription_plan.save!
35
35
  end
36
36
 
37
+ it "should not try to create the plan at stripe before the model is updated" do
38
+ subscription_plan = build(:subscription_plan)
39
+ subscription_plan.save!
40
+ subscription_plan.name = "new name"
41
+
42
+ Payola::CreatePlan.should_not_receive(:call)
43
+ subscription_plan.save!
44
+ end
45
+
37
46
  end
38
47
  end
@@ -12,7 +12,7 @@ module Payola
12
12
  expect(product.valid?).to be false
13
13
  end
14
14
  it "should validate permalink" do
15
- product = build(:product, permalink: false)
15
+ product = build(:product, permalink: nil)
16
16
  expect(product.valid?).to be false
17
17
  end
18
18
  end
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  module Payola
4
4
  describe SubscriptionsController do
5
+ routes { Payola::Engine.routes }
6
+
5
7
  before do
6
8
  @plan = create(:subscription_plan)
7
9
  Payola.register_subscribable(@plan.class)
@@ -25,10 +27,11 @@ module Payola
25
27
  'action' => 'create',
26
28
  'plan' => @plan,
27
29
  'coupon' => nil,
30
+ 'quantity' => 1,
28
31
  'affiliate' => nil
29
32
  ).and_return(subscription)
30
33
 
31
- post :create, plan_class: @plan.plan_class, plan_id: @plan.id, use_route: :payola
34
+ post :create, plan_class: @plan.plan_class, plan_id: @plan.id
32
35
 
33
36
  expect(response.status).to eq 200
34
37
  parsed_body = JSON.load(response.body)
@@ -50,7 +53,7 @@ module Payola
50
53
  CreateSubscription.should_receive(:call).and_return(subscription)
51
54
  Payola.should_not_receive(:queue!)
52
55
 
53
- post :create, plan_class: @plan.plan_class, plan_id: @plan.id, use_route: :payola
56
+ post :create, plan_class: @plan.plan_class, plan_id: @plan.id
54
57
 
55
58
  expect(response.status).to eq 400
56
59
  parsed_body = JSON.load(response.body)
@@ -61,12 +64,12 @@ module Payola
61
64
 
62
65
  describe '#status' do
63
66
  it "should return 404 if it can't find the subscription" do
64
- get :status, guid: 'doesnotexist', use_route: :payola
67
+ get :status, guid: 'doesnotexist'
65
68
  expect(response.status).to eq 404
66
69
  end
67
70
  it "should return json with properties" do
68
71
  subscription = create(:subscription)
69
- get :status, guid: subscription.guid, use_route: :payola
72
+ get :status, guid: subscription.guid
70
73
 
71
74
  expect(response.status).to eq 200
72
75
 
@@ -82,7 +85,7 @@ module Payola
82
85
  it "should redirect to the product's redirect path" do
83
86
  plan = create(:subscription_plan)
84
87
  subscription = create(:subscription, :plan => plan)
85
- get :show, guid: subscription.guid, use_route: :payola
88
+ get :show, guid: subscription.guid
86
89
 
87
90
  expect(response).to redirect_to '/'
88
91
  end
@@ -94,7 +97,7 @@ module Payola
94
97
  end
95
98
  it "call Payola::CancelSubscription and redirect" do
96
99
  Payola::CancelSubscription.should_receive(:call)
97
- delete :destroy, :guid => @subscription.guid, use_route: :payola
100
+ delete :destroy, guid: @subscription.guid
98
101
  # TODO : Figure out why this needs to be a hardcoded path.
99
102
  # Why doesn't subscription_path(@subscription) work?
100
103
  expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
@@ -104,7 +107,7 @@ module Payola
104
107
  expect(Payola::CancelSubscription).to_not receive(:call)
105
108
  expect_any_instance_of(::ApplicationController).to receive(:payola_can_modify_subscription?).and_return(false)
106
109
 
107
- delete :destroy, :guid => @subscription.guid, use_route: :payola
110
+ delete :destroy, guid: @subscription.guid
108
111
  expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
109
112
  expect(request.flash[:alert]).to eq 'You cannot modify this subscription.'
110
113
  end
@@ -119,17 +122,42 @@ module Payola
119
122
  it "should call Payola::ChangeSubscriptionPlan and redirect" do
120
123
  expect(Payola::ChangeSubscriptionPlan).to receive(:call).with(@subscription, @plan)
121
124
 
122
- post :change_plan, guid: @subscription.guid, plan_class: @plan.plan_class, plan_id: @plan.id, use_route: :payola
125
+ post :change_plan, guid: @subscription.guid, plan_class: @plan.plan_class, plan_id: @plan.id
123
126
 
124
127
  expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
125
128
  expect(request.flash[:notice]).to eq 'Subscription plan updated'
126
129
  end
127
130
 
128
- it "should redirect with an error if it can't cancel the subscription" do
129
- expect(Payola::CancelSubscription).to_not receive(:call)
131
+ it "should redirect with an error if it can't update the subscription" do
132
+ expect(Payola::ChangeSubscriptionPlan).to_not receive(:call)
133
+ expect_any_instance_of(::ApplicationController).to receive(:payola_can_modify_subscription?).and_return(false)
134
+
135
+ post :change_plan, guid: @subscription.guid, plan_class: @plan.plan_class, plan_id: @plan.id
136
+ expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
137
+ expect(request.flash[:alert]).to eq 'You cannot modify this subscription.'
138
+ end
139
+ end
140
+
141
+ describe '#change_quantity' do
142
+ before :each do
143
+ @subscription = create(:subscription, state: :active)
144
+ @plan = create(:subscription_plan)
145
+ end
146
+
147
+ it "should call Payola::ChangeSubscriptionQuantity and redirect" do
148
+ expect(Payola::ChangeSubscriptionQuantity).to receive(:call).with(@subscription, 5)
149
+
150
+ post :change_quantity, guid: @subscription.guid, quantity: 5
151
+
152
+ expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
153
+ expect(request.flash[:notice]).to eq 'Subscription quantity updated'
154
+ end
155
+
156
+ it "should redirect with an error if it can't update the subscription" do
157
+ expect(Payola::ChangeSubscriptionQuantity).to_not receive(:call)
130
158
  expect_any_instance_of(::ApplicationController).to receive(:payola_can_modify_subscription?).and_return(false)
131
159
 
132
- delete :destroy, :guid => @subscription.guid, use_route: :payola
160
+ post :change_quantity, guid: @subscription.guid, quantity: 5
133
161
  expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
134
162
  expect(request.flash[:alert]).to eq 'You cannot modify this subscription.'
135
163
  end
@@ -144,7 +172,7 @@ module Payola
144
172
  it "should call UpdateCard and redirect" do
145
173
  expect(Payola::UpdateCard).to receive(:call).with(@subscription, 'tok_1234')
146
174
 
147
- post :update_card, guid: @subscription.guid, stripeToken: 'tok_1234', use_route: :payola
175
+ post :update_card, guid: @subscription.guid, stripeToken: 'tok_1234'
148
176
 
149
177
  expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
150
178
  expect(request.flash[:notice]).to eq 'Card updated'
@@ -154,7 +182,7 @@ module Payola
154
182
  expect(Payola::UpdateCard).to receive(:call).never
155
183
  expect_any_instance_of(::ApplicationController).to receive(:payola_can_modify_subscription?).and_return(false)
156
184
 
157
- post :update_card, guid: @subscription.guid, stripeToken: 'tok_1234', use_route: :payola
185
+ post :update_card, guid: @subscription.guid, stripeToken: 'tok_1234'
158
186
 
159
187
  expect(response).to redirect_to "/subdir/payola/confirm_subscription/#{@subscription.guid}"
160
188
  expect(request.flash[:alert]).to eq 'You cannot modify this subscription.'
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  module Payola
4
4
  describe TransactionsController do
5
+ routes { Payola::Engine.routes }
6
+
5
7
  before do
6
8
  @product = create(:product)
7
9
  Payola.register_sellable(@product.class)
@@ -29,7 +31,7 @@ module Payola
29
31
  ).and_return(sale)
30
32
 
31
33
  Payola.should_receive(:queue!)
32
- post :create, product_class: @product.product_class, permalink: @product.permalink, use_route: :payola
34
+ post :create, product_class: @product.product_class, permalink: @product.permalink
33
35
 
34
36
  expect(response.status).to eq 200
35
37
  parsed_body = JSON.load(response.body)
@@ -50,7 +52,7 @@ module Payola
50
52
  CreateSale.should_receive(:call).and_return(sale)
51
53
  Payola.should_not_receive(:queue!)
52
54
 
53
- post :create, product_class: @product.product_class, permalink: @product.permalink, use_route: :payola
55
+ post :create, product_class: @product.product_class, permalink: @product.permalink
54
56
 
55
57
  expect(response.status).to eq 400
56
58
  parsed_body = JSON.load(response.body)
@@ -61,12 +63,12 @@ module Payola
61
63
 
62
64
  describe '#status' do
63
65
  it "should return 404 if it can't find the sale" do
64
- get :status, guid: 'doesnotexist', use_route: :payola
66
+ get :status, guid: 'doesnotexist'
65
67
  expect(response.status).to eq 404
66
68
  end
67
69
  it "should return json with properties" do
68
70
  sale = create(:sale)
69
- get :status, guid: sale.guid, use_route: :payola
71
+ get :status, guid: sale.guid
70
72
 
71
73
  expect(response.status).to eq 200
72
74
 
@@ -81,7 +83,7 @@ module Payola
81
83
  describe '#show' do
82
84
  it "should redirect to the product's redirect path" do
83
85
  sale = create(:sale)
84
- get :show, guid: sale.guid, use_route: :payola
86
+ get :show, guid: sale.guid
85
87
 
86
88
  expect(response).to redirect_to '/'
87
89
  end
@@ -0,0 +1,2 @@
1
+ class User < ActiveRecord::Base
2
+ end
@@ -16,6 +16,8 @@
16
16
  <input type="text" data-stripe="cvc"></input><br>
17
17
  Coupon Code<br>
18
18
  <input type="text" name="coupon" data-payola="coupon"></input><br>
19
+ Quantity<br>
20
+ <input type="text" name="quantity" data-payola="quantity"></input><br>
19
21
  <input type="submit"></input>
20
22
  <% end %>
21
23
 
@@ -13,7 +13,11 @@ Rails.application.configure do
13
13
  config.eager_load = false
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
- config.serve_static_assets = true
16
+ if Rails::VERSION::MAJOR >= 4 && Rails::VERSION::MINOR >= 2
17
+ config.serve_static_files = true
18
+ else
19
+ config.serve_static_asses = true
20
+ end
17
21
  config.static_cache_control = 'public, max-age=3600'
18
22
 
19
23
  # Show full error reports and disable caching.
Binary file
@@ -0,0 +1,8 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def change
3
+ create_table :users do |t|
4
+
5
+ t.timestamps
6
+ end
7
+ end
8
+ end
@@ -11,14 +11,14 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20141122020755) do
14
+ ActiveRecord::Schema.define(version: 20141213205847) do
15
15
 
16
- create_table "owners", force: true do |t|
16
+ create_table "owners", force: :cascade do |t|
17
17
  t.datetime "created_at"
18
18
  t.datetime "updated_at"
19
19
  end
20
20
 
21
- create_table "payola_affiliates", force: true do |t|
21
+ create_table "payola_affiliates", force: :cascade do |t|
22
22
  t.string "code"
23
23
  t.string "email"
24
24
  t.integer "percent"
@@ -26,14 +26,15 @@ ActiveRecord::Schema.define(version: 20141122020755) do
26
26
  t.datetime "updated_at"
27
27
  end
28
28
 
29
- create_table "payola_coupons", force: true do |t|
29
+ create_table "payola_coupons", force: :cascade do |t|
30
30
  t.string "code"
31
31
  t.integer "percent_off"
32
32
  t.datetime "created_at"
33
33
  t.datetime "updated_at"
34
+ t.boolean "active", default: true
34
35
  end
35
36
 
36
- create_table "payola_sales", force: true do |t|
37
+ create_table "payola_sales", force: :cascade do |t|
37
38
  t.string "email"
38
39
  t.string "guid"
39
40
  t.integer "product_id"
@@ -69,13 +70,13 @@ ActiveRecord::Schema.define(version: 20141122020755) do
69
70
  add_index "payola_sales", ["product_id", "product_type"], name: "index_payola_sales_on_product"
70
71
  add_index "payola_sales", ["stripe_customer_id"], name: "index_payola_sales_on_stripe_customer_id"
71
72
 
72
- create_table "payola_stripe_webhooks", force: true do |t|
73
+ create_table "payola_stripe_webhooks", force: :cascade do |t|
73
74
  t.string "stripe_id"
74
75
  t.datetime "created_at"
75
76
  t.datetime "updated_at"
76
77
  end
77
78
 
78
- create_table "payola_subscriptions", force: true do |t|
79
+ create_table "payola_subscriptions", force: :cascade do |t|
79
80
  t.string "plan_type"
80
81
  t.integer "plan_id"
81
82
  t.datetime "start"
@@ -115,7 +116,7 @@ ActiveRecord::Schema.define(version: 20141122020755) do
115
116
 
116
117
  add_index "payola_subscriptions", ["guid"], name: "index_payola_subscriptions_on_guid"
117
118
 
118
- create_table "products", force: true do |t|
119
+ create_table "products", force: :cascade do |t|
119
120
  t.string "name"
120
121
  t.string "permalink"
121
122
  t.integer "price"
@@ -123,7 +124,7 @@ ActiveRecord::Schema.define(version: 20141122020755) do
123
124
  t.datetime "updated_at"
124
125
  end
125
126
 
126
- create_table "subscription_plan_without_interval_counts", force: true do |t|
127
+ create_table "subscription_plan_without_interval_counts", force: :cascade do |t|
127
128
  t.string "name"
128
129
  t.string "stripe_id"
129
130
  t.integer "amount"
@@ -132,7 +133,7 @@ ActiveRecord::Schema.define(version: 20141122020755) do
132
133
  t.datetime "updated_at"
133
134
  end
134
135
 
135
- create_table "subscription_plans", force: true do |t|
136
+ create_table "subscription_plans", force: :cascade do |t|
136
137
  t.integer "amount"
137
138
  t.string "interval"
138
139
  t.integer "interval_count"
@@ -143,4 +144,9 @@ ActiveRecord::Schema.define(version: 20141122020755) do
143
144
  t.datetime "updated_at"
144
145
  end
145
146
 
147
+ create_table "users", force: :cascade do |t|
148
+ t.datetime "created_at"
149
+ t.datetime "updated_at"
150
+ end
151
+
146
152
  end
Binary file
@@ -6210,3 +6210,134 @@ Started GET "/assets/payola.js?body=1" for 127.0.0.1 at 2014-11-25 16:56:14 -050
6210
6210
  Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-11-25 16:56:14 -0500
6211
6211
  Terminating 3 actors...
6212
6212
  Terminating task: type=:finalizer, meta={:method_name=>:__shutdown__}, status=:callwait
6213
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
6214
+ Migrating to AddSetupFeeToPayolaSubscriptions (20141122020755)
6215
+  (0.2ms) begin transaction
6216
+  (0.5ms) ALTER TABLE "payola_subscriptions" ADD "setup_fee" integer
6217
+ SQL (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20141122020755"]]
6218
+  (1.1ms) commit transaction
6219
+ Migrating to CreateUsers (20141204170622)
6220
+  (0.1ms) begin transaction
6221
+  (0.3ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "created_at" datetime, "updated_at" datetime) 
6222
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20141204170622"]]
6223
+  (0.8ms) commit transaction
6224
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
6225
+  (0.1ms)  SELECT sql
6226
+ FROM sqlite_master
6227
+ WHERE name='index_payola_sales_on_owner_id_and_owner_type' AND type='index'
6228
+ UNION ALL
6229
+ SELECT sql
6230
+ FROM sqlite_temp_master
6231
+ WHERE name='index_payola_sales_on_owner_id_and_owner_type' AND type='index'
6232
+ 
6233
+  (0.1ms) SELECT sql
6234
+ FROM sqlite_master
6235
+ WHERE name='index_payola_sales_on_stripe_customer_id' AND type='index'
6236
+ UNION ALL
6237
+ SELECT sql
6238
+ FROM sqlite_temp_master
6239
+ WHERE name='index_payola_sales_on_stripe_customer_id' AND type='index'
6240
+
6241
+  (0.1ms)  SELECT sql
6242
+ FROM sqlite_master
6243
+ WHERE name='index_payola_sales_on_product' AND type='index'
6244
+ UNION ALL
6245
+ SELECT sql
6246
+ FROM sqlite_temp_master
6247
+ WHERE name='index_payola_sales_on_product' AND type='index'
6248
+ 
6249
+  (0.1ms) SELECT sql
6250
+ FROM sqlite_master
6251
+ WHERE name='index_payola_sales_on_guid' AND type='index'
6252
+ UNION ALL
6253
+ SELECT sql
6254
+ FROM sqlite_temp_master
6255
+ WHERE name='index_payola_sales_on_guid' AND type='index'
6256
+
6257
+  (0.1ms)  SELECT sql
6258
+ FROM sqlite_master
6259
+ WHERE name='index_payola_sales_on_email' AND type='index'
6260
+ UNION ALL
6261
+ SELECT sql
6262
+ FROM sqlite_temp_master
6263
+ WHERE name='index_payola_sales_on_email' AND type='index'
6264
+ 
6265
+  (0.1ms) SELECT sql
6266
+ FROM sqlite_master
6267
+ WHERE name='index_payola_sales_on_coupon_id' AND type='index'
6268
+ UNION ALL
6269
+ SELECT sql
6270
+ FROM sqlite_temp_master
6271
+ WHERE name='index_payola_sales_on_coupon_id' AND type='index'
6272
+
6273
+  (0.1ms)  SELECT sql
6274
+ FROM sqlite_master
6275
+ WHERE name='index_payola_subscriptions_on_guid' AND type='index'
6276
+ UNION ALL
6277
+ SELECT sql
6278
+ FROM sqlite_temp_master
6279
+ WHERE name='index_payola_subscriptions_on_guid' AND type='index'
6280
+ 
6281
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
6282
+ Migrating to AddActiveToPayolaCoupon (20141213205847)
6283
+  (0.1ms) begin transaction
6284
+  (1.0ms) ALTER TABLE "payola_coupons" ADD "active" boolean DEFAULT 't'
6285
+ SQL (0.2ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20141213205847"]]
6286
+  (1.4ms) commit transaction
6287
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
6288
+  (0.2ms)  SELECT sql
6289
+ FROM sqlite_master
6290
+ WHERE name='index_payola_sales_on_owner_id_and_owner_type' AND type='index'
6291
+ UNION ALL
6292
+ SELECT sql
6293
+ FROM sqlite_temp_master
6294
+ WHERE name='index_payola_sales_on_owner_id_and_owner_type' AND type='index'
6295
+ 
6296
+  (0.1ms) SELECT sql
6297
+ FROM sqlite_master
6298
+ WHERE name='index_payola_sales_on_stripe_customer_id' AND type='index'
6299
+ UNION ALL
6300
+ SELECT sql
6301
+ FROM sqlite_temp_master
6302
+ WHERE name='index_payola_sales_on_stripe_customer_id' AND type='index'
6303
+
6304
+  (0.1ms)  SELECT sql
6305
+ FROM sqlite_master
6306
+ WHERE name='index_payola_sales_on_product' AND type='index'
6307
+ UNION ALL
6308
+ SELECT sql
6309
+ FROM sqlite_temp_master
6310
+ WHERE name='index_payola_sales_on_product' AND type='index'
6311
+ 
6312
+  (0.1ms) SELECT sql
6313
+ FROM sqlite_master
6314
+ WHERE name='index_payola_sales_on_guid' AND type='index'
6315
+ UNION ALL
6316
+ SELECT sql
6317
+ FROM sqlite_temp_master
6318
+ WHERE name='index_payola_sales_on_guid' AND type='index'
6319
+
6320
+  (0.1ms)  SELECT sql
6321
+ FROM sqlite_master
6322
+ WHERE name='index_payola_sales_on_email' AND type='index'
6323
+ UNION ALL
6324
+ SELECT sql
6325
+ FROM sqlite_temp_master
6326
+ WHERE name='index_payola_sales_on_email' AND type='index'
6327
+ 
6328
+  (0.1ms) SELECT sql
6329
+ FROM sqlite_master
6330
+ WHERE name='index_payola_sales_on_coupon_id' AND type='index'
6331
+ UNION ALL
6332
+ SELECT sql
6333
+ FROM sqlite_temp_master
6334
+ WHERE name='index_payola_sales_on_coupon_id' AND type='index'
6335
+
6336
+  (0.1ms)  SELECT sql
6337
+ FROM sqlite_master
6338
+ WHERE name='index_payola_subscriptions_on_guid' AND type='index'
6339
+ UNION ALL
6340
+ SELECT sql
6341
+ FROM sqlite_temp_master
6342
+ WHERE name='index_payola_subscriptions_on_guid' AND type='index'
6343
+