Вопрос: Как сохранить запрос GraphQL в мою локальную базу данных / базу данных postgres?
(предположим, я просто хочу сохранить одно или два поля - я сделаю больше, но я просто не уверен, как это сделать для начала.)
Фон:
У меня есть встроенное приложение shopify, которое работает с веб-перехватчиками для приема заказов. Я выполняю задание, и данные отлично хранятся в моей базе данных.
Я создал очень простое приложение, которое выполняет в модели запрос graphql. Я настроил его так, чтобы видеть объект json в представлении. Но я не на 100% понимаю, как я перехожу из запроса api graphql -> ответа (в модели - по крайней мере, на данный момент) -> сохранения атрибутов данных в мою базу данных
Я тестирую это как новое приложение. Итак, я не разделяю модели / контроллеры и т. Д., А пока использую только одну модель.
Думаю, я немного заблудился. Мне нужно запускать работу? Или это то, что я могу сделать в контроллере (или в модели).
Модель
shop.rb
class Shop < ActiveRecord::Base
include ShopifyApp::ShopSessionStorage
has_many :orders
def api_version
ShopifyApp.configuration.api_version
end
session = ShopifyAPI::Session.new(domain: "bryanbeshore.myshopify.com", token: Shop.first.shopify_token, api_version: "2020-04")
ShopifyAPI::Base.activate_session(session)
client = ShopifyAPI::GraphQL.client
SHOP_NAME_QUERY = client.parse <<-'GRAPHQL'
{
shop {
name
}
orders(first: 100) {
edges {
node {
id
name
createdAt
shippingAddress {
address1
address2
city
province
provinceCode
zip
}
}
}
}
}
GRAPHQL
end
Контроллер
home_controller.rb
class HomeController < AuthenticatedController
def index
client = ShopifyAPI::GraphQL.client
@shop_orders = client.query(Shop::SHOP_NAME_QUERY).data.to_json
end
end
Просмотр
приложение / просмотров / главная / index.html.erb
<p><%= @shop_orders %></p>
Текущая схема
ActiveRecord::Schema.define(version: 2020_05_06_181457) do
create_table "orders", force: :cascade do |t|
t.string "shopify_order_id", null: false
t.string "shopify_order_name", default: ""
t.datetime "shopify_order_created_at"
t.integer "shop_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["shop_id"], name: "index_orders_on_shop_id"
t.index ["shopify_order_id"], name: "index_orders_on_shopify_order_id", unique: true
end
create_table "shops", force: :cascade do |t|
t.string "shopify_domain", null: false
t.string "shopify_token", null: false
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["shopify_domain"], name: "index_shops_on_shopify_domain", unique: true
end
end