module ShopifyApp::ShopSessionStorage

def construct_session(shop)

def construct_session(shop)
  return unless shop
  ShopifyAPI::Auth::Session.new(
    shop: shop.shopify_domain,
    access_token: shop.shopify_token,
  )
end

def destroy_by_shopify_domain(domain)

def destroy_by_shopify_domain(domain)
  destroy_by(shopify_domain: domain)
end

def retrieve(id)

def retrieve(id)
  shop = find_by(id: id)
  construct_session(shop)
end

def retrieve_by_shopify_domain(domain)

def retrieve_by_shopify_domain(domain)
  shop = find_by(shopify_domain: domain)
  construct_session(shop)
end

def store(auth_session, *_args)

def store(auth_session, *_args)
  shop = find_or_initialize_by(shopify_domain: auth_session.shop)
  shop.shopify_token = auth_session.access_token
  shop.save!
  shop.id
end