Skip to content

Instantly share code, notes, and snippets.

@kirs
Last active March 31, 2016 11:57
Show Gist options
  • Save kirs/4eff795ae445a4321ae08feb56eb6d08 to your computer and use it in GitHub Desktop.
Save kirs/4eff795ae445a4321ae08feb56eb6d08 to your computer and use it in GitHub Desktop.
TaxLineSchema = Dry::Validation.Form do
optional(:title)
optional(:price)
optional(:rate)
optional(:position)
optional(:zone)
optional(:source)
end
OrderSchema = Dry::Validation.Form do
key(:order).schema do
key(:email).maybe(:str?)
optional(:tax_lines).each do
schema(TaxLineSchema)
end
optional(:shipping_lines).schema do
each do
key(:title).required(:str?)
end
end
key(:customer).schema do
optional(:accepts_marketing)
optional(:addresses)
optional(:addresses_attributes)
optional(:email)
optional(:first_name)
optional(:last_name)
optional(:note)
optional(:origin)
optional(:password)
optional(:password_confirmation)
optional(:send_email_invite)
optional(:send_email_welcome)
optional(:tag_string)
optional(:tags)
optional(:tax_exempt)
optional(:multipass_identifie)
optional(:storage_policie)
end
optional(:marketing_attribution).schema do
key(:medium).required(:str?)
key(:source).required(:str?)
key(:campaign).required(:str?)
key(:share).required(:str?)
key(:term).required(:str?)
key(:content).required(:str?)
end
optional(:settings).schema do
key(:send_confirmation_email).required(:bool?)
key(:send_fulfillment_email).required(:bool?)
key(:send_cancellation_email).required(:bool?)
key(:send_refund_email).required(:bool?)
key(:line_items).schema do
each do
optional(:variant)
optional(:variant_id)
optional(:order)
optional(:title)
optional(:quantity)
optional(:claimed_inventory)
optional(:sku)
optional(:grams)
optional(:variant_title)
optional(:vendor)
optional(:fulfillment_service)
optional(:price)
optional(:compare_at_price)
optional(:fulfillment_status)
optional(:product)
optional(:taxable)
optional(:tax_code)
optional(:tax_service)
optional(:requires_shipping)
optional(:gift_card)
optional(:cart_discount_allocated_amount)
optional(:pre_tax_price)
key(:applied_discounts).schema do
key(:amount)
key(::description)
key(:line_item)
key(:script_version_id)
key(:tax_lines).each do
schema(TaxLineSchema)
end
end
end
optional(:discount_codes).each(:str?)
optional(:shipping_address).maybe(:str?)
optional(:billing_address).maybe(:str?)
optional(:processed_at).maybe(:date_time?)
optional(:created_at).maybe(:date_time?)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment