mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-29 18:19:39 +02:00
47 lines
1.3 KiB
Ruby
47 lines
1.3 KiB
Ruby
|
class CreateSubscriptions < ActiveRecord::Migration[7.2]
|
||
|
def change
|
||
|
create_table :subscriptions, id: :uuid do |t|
|
||
|
t.references :family, null: false, foreign_key: true, type: :uuid
|
||
|
|
||
|
t.string :status, null: false
|
||
|
|
||
|
t.string :stripe_id
|
||
|
t.decimal :amount, precision: 19, scale: 4
|
||
|
t.string :currency
|
||
|
t.string :interval
|
||
|
|
||
|
t.datetime :current_period_ends_at
|
||
|
t.datetime :trial_ends_at
|
||
|
|
||
|
t.timestamps
|
||
|
end
|
||
|
|
||
|
reversible do |dir|
|
||
|
dir.up do
|
||
|
if Rails.application.config.app_mode.managed?
|
||
|
execute <<~SQL
|
||
|
INSERT INTO subscriptions (family_id, status, trial_ends_at, created_at, updated_at)
|
||
|
SELECT
|
||
|
f.id,
|
||
|
CASE
|
||
|
WHEN f.trial_started_at IS NOT NULL THEN 'trialing'
|
||
|
ELSE COALESCE(f.stripe_subscription_status, 'incomplete')
|
||
|
END,
|
||
|
CASE
|
||
|
WHEN f.trial_started_at IS NOT NULL THEN f.trial_started_at + INTERVAL '14 days'
|
||
|
ELSE NULL
|
||
|
END,
|
||
|
now(),
|
||
|
now()
|
||
|
FROM families f
|
||
|
SQL
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
remove_column :families, :stripe_subscription_status, :string
|
||
|
remove_column :families, :trial_started_at, :datetime
|
||
|
remove_column :families, :stripe_plan_id, :string
|
||
|
end
|
||
|
end
|