38 lines
782 B
Ruby
38 lines
782 B
Ruby
# frozen_string_literal: true
|
|
|
|
require 'airrecord'
|
|
module SpreadsheetBackends
|
|
class Airtable
|
|
attr_accessor :form, :user
|
|
|
|
def initialize(form)
|
|
@form = form
|
|
@user = form.user
|
|
end
|
|
|
|
def url
|
|
"https://airtable.com/#{form.airtable_app_key}"
|
|
end
|
|
|
|
def append(data)
|
|
result = table.create(data, typecast: true)
|
|
result.id.present?
|
|
rescue Airrecord::Error
|
|
false
|
|
end
|
|
|
|
def create
|
|
# Airtable must already exist
|
|
# TODO: maybe add validation here?
|
|
end
|
|
|
|
def headers
|
|
table.records.first&.fields&.keys # we only know the headers once we have at least one record
|
|
end
|
|
|
|
def table
|
|
@table ||= Airrecord.table(form.airtable_api_key, form.airtable_app_key, form.airtable_table)
|
|
end
|
|
end
|
|
end
|