require "google/cloud/firestore"
class Firestore
def initialize(uid)
@store = Google::Cloud::Firestore.new(
project_id: ENV["FIREBASE_PROJECT_ID"],
credentials: Rails.root.join('config/firebase_admin', ENV['GCP_AUTH_KEY_FILE'])
)
@uid = uid
end
def update_purchase_stripe!(data)
# 新規作成の場合もあるので 初期データからupdateする fデータをmergeして更新する
ref = @store.col("purchase").doc(@uid)
@store.transaction do |tx|
# もしまだデータが作成されていない場合には初期化して更新する
unless ref.get.exists?
ref.set(data_format) # merge: trueで実行するとnil指定のfieldsが削除されてしまう
end
ref.update(data)
end
end
def purchase_stripe
get("purchase")
end
private
# firestoreからデータを取得する
def get(collection_name)
@store.col(collection_name).doc(@uid).get.fields
end