Transform data schemas
###Schema -> Avro
(nsexample.avro
(:require [schema.core :as s]
[com.intentmedia.schema-transform.prismatic-transform :refer [to-avro]]))
(s/defschemaUser
{:name String
:favorite_number (s/maybe Integer)
:favorite_color (s/maybe String)})
(to-avro User)
=> [{:type"record",
:fields [{:type"string", :name"name"}
{:type ["null""int"], :name"favorite_number"}
{:type ["null""string"], :name"favorite_color"}],
:name"User",
:namespace"example.avro"}]###Avro -> Schema
(require '[schema.core :as s]
'[com.intentmedia.schema-transform.avro-transform :refer [avro->prismatic]])
(defavro-schema"{\"name\": \"User\",\"type\": \"record\",\"fields\": [ {\"name\": \"name\", \"type\": \"string\"}, {\"name\": \"favorite_number\", \"type\": [\"null\",\"int\"]}, {\"name\": \"favorite_color\", \"type\": [\"null\",\"string\"]} ],\"namespace\": \"example.avro\" }")
(avro->prismatic avro-schema)
=> {:name String
:favorite_number (s/maybe Integer)
:favorite_color (s/maybe String)}