Class: ShopifyGraphql::AppSubscriptionFields

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

Constant Summary collapse

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

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