Fork me on GitHub
#protojure2020-06-10
>
sbrauer15:06:43

Hi! I'm new to protojure (and gRPC for that matter). First off I want to thank you for creating and sharing protojure. I'm trying to create a clojure client for a vendor's service. I've managed to get some service method calls working but having trouble with one. It looks to me like some of the fields are missing in the generated cis->Message code for one of the message types. Would someone be wiling to take a look? The proto def for the message is https://github.com/sajari/proto/blob/v2/sajari/pipeline/v2/record.proto#L44-L57 There are 4 fields, but in the generated code I only see field 2.

(defn cis->ReplaceRecordRequest
  "CodedInputStream to ReplaceRecordRequest"
  [is]
  (->> (tag-map ReplaceRecordRequest-defaults
         (fn [tag index]
             (case index
               2 [:values (com.google.protobuf/ecis->Struct is)]

               [index (serdes.core/cis->undefined tag is)]))
         is)
        (map->ReplaceRecordRequest-record)))
I'm using the latest release (0.8.2) of the plugin. Thank you!

sbrauer16:06:42

After a closer look I realize the missing fields are in other places too (not just cis->). For example, here's the defrecord which only serializes field 2:

(defrecord ReplaceRecordRequest-record [values]
  pb/Writer
  (serialize [this os]
    (serdes.core/write-embedded 2 (:values this) os))
  pb/TypeReflection
  (gettype [this]
    "sajari.pipeline.v2.ReplaceRecordRequest"))