Class: ShopifyGraphql::AppSubscriptionFields

Inherits:
Object
  • Object
show all
Defined in:
app/graphql/shopify_graphql/app_subscription_fields.rb

Constant Summary collapse

FRAGMENT =
"fragment AppSubscriptionFields on AppSubscription {\n  id\n  name\n  status\n  createdAt\n  trialDays\n  currentPeriodEnd\n  test\n  lineItems {\n    id\n    plan {\n      pricingDetails {\n        __typename\n        ... on AppRecurringPricing {\n          price {\n            amount\n          }\n          interval\n        }\n        ... on AppUsagePricing {\n          balanceUsed {\n            amount\n          }\n          cappedAmount {\n            amount\n          }\n          interval\n          terms\n        }\n      }\n    }\n  }\n}\n"

Class Method Summary collapse

Class Method Details

.parse(data) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/graphql/shopify_graphql/app_subscription_fields.rb', line 39

def self.parse(data)
  recurring_line_item = data.lineItems.find do |line_item|
    line_item.plan.pricingDetails.__typename == "AppRecurringPricing"
  end
  recurring_pricing = recurring_line_item&.plan&.pricingDetails
  usage_line_item = data.lineItems.find do |line_item|
    line_item.plan.pricingDetails.__typename == "AppUsagePricing"
  end
  usage_pricing = usage_line_item&.plan&.pricingDetails

  OpenStruct.new(
    id: data.id,
    name: data.name,
    status: data.status,
    created_at: data.createdAt && Time.parse(data.createdAt),
    trial_days: data.trialDays,
    current_period_end: data.currentPeriodEnd && Time.parse(data.currentPeriodEnd),
    test: data.test,
    recurring_line_item_id: recurring_line_item&.id,
    recurring_price: recurring_pricing&.price&.amount&.to_d,
    recurring_interval: recurring_pricing&.interval,
    usage_line_item_id: usage_line_item&.id,
    usage_balance: usage_pricing&.balanceUsed&.amount&.to_d,
    usage_capped_amount: usage_pricing&.cappedAmount&.amount&.to_d,
    usage_interval: usage_pricing&.interval,
    usage_terms: usage_pricing&.terms
  )
end