From 5dc668e44e43a94d481a95e6806ed7cb999970aa Mon Sep 17 00:00:00 2001 From: Jacob Sanderson Date: Fri, 13 Mar 2026 14:34:09 +1100 Subject: [PATCH] fix: include time package in codegen --- lokerpc/codegen/go.go | 48 +++++++++++++++++++++++++ lokerpc/codegen/testdata/nested.json.go | 1 + 2 files changed, 49 insertions(+) diff --git a/lokerpc/codegen/go.go b/lokerpc/codegen/go.go index 76fd37e..669910b 100644 --- a/lokerpc/codegen/go.go +++ b/lokerpc/codegen/go.go @@ -86,6 +86,9 @@ func GenGoClient(w io.Writer, meta lokerpc.Meta) error { b.WriteString("\n") b.WriteString("import (\n") b.WriteString("\t\"context\"\n") + if metaUsesTimestamp(meta) { + b.WriteString("\t\"time\"\n") + } b.WriteString("\n") b.WriteString("\t\"github.com/LOKE/pkg/lokerpc\"\n") b.WriteString(")\n") @@ -171,6 +174,51 @@ func GenGoClient(w io.Writer, meta lokerpc.Meta) error { return b.Flush() } +func schemaUsesTimestamp(schema jtd.Schema) bool { + if schema.Type == jtd.TypeTimestamp { + return true + } + for _, v := range schema.Definitions { + if schemaUsesTimestamp(v) { + return true + } + } + for _, v := range schema.Properties { + if schemaUsesTimestamp(v) { + return true + } + } + for _, v := range schema.OptionalProperties { + if schemaUsesTimestamp(v) { + return true + } + } + if schema.Elements != nil && schemaUsesTimestamp(*schema.Elements) { + return true + } + if schema.Values != nil && schemaUsesTimestamp(*schema.Values) { + return true + } + return false +} + +func metaUsesTimestamp(meta lokerpc.Meta) bool { + for _, v := range meta.Definitions { + if schemaUsesTimestamp(v) { + return true + } + } + for _, iface := range meta.Interfaces { + if iface.RequestTypeDef != nil && schemaUsesTimestamp(*iface.RequestTypeDef) { + return true + } + if iface.ResponseTypeDef != nil && schemaUsesTimestamp(*iface.ResponseTypeDef) { + return true + } + } + return false +} + // Regexp that matches word boundaries, // e.g. // "customer_id" -> "CustomerID" diff --git a/lokerpc/codegen/testdata/nested.json.go b/lokerpc/codegen/testdata/nested.json.go index aee5cda..1f1679f 100644 --- a/lokerpc/codegen/testdata/nested.json.go +++ b/lokerpc/codegen/testdata/nested.json.go @@ -2,6 +2,7 @@ package nested import ( "context" + "time" "github.com/LOKE/pkg/lokerpc" )