From 0a7c4afabd77584c82ee96057c8e9d0d4618996c Mon Sep 17 00:00:00 2001 From: Anirudh Oppiliappan Date: Thu, 14 Aug 2025 18:04:08 +0000 Subject: [PATCH] lexicons,api: new knot lexicon Signed-off-by: Anirudh Oppiliappan --- api/tangled/cbor_gen.go | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ api/tangled/knothealth.go | 35 ----------------------------------- api/tangled/tangledknot.go | 22 ++++++++++++++++++++++ cmd/gen.go | 1 + 4 file(s) changed, 153 insertion(s)(+), 35 deletion(s)(-) diff --git a/api/tangled/cbor_gen.go b/api/tangled/cbor_gen.go --- a/api/tangled/cbor_gen.go +++ b/api/tangled/cbor_gen.go @@ -2141,6 +2141,136 @@ } return nil } +func (t *Knot) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write([]byte{162}); err != nil { + return err + } + + // t.LexiconTypeID (string) (string) + if len("$type") > 1000000 { + return xerrors.Errorf("Value in field \"$type\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { + return err + } + if _, err := cw.WriteString(string("$type")); err != nil { + return err + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.knot"))); err != nil { + return err + } + if _, err := cw.WriteString(string("sh.tangled.knot")); err != nil { + return err + } + + // t.CreatedAt (string) (string) + if len("createdAt") > 1000000 { + return xerrors.Errorf("Value in field \"createdAt\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil { + return err + } + if _, err := cw.WriteString(string("createdAt")); err != nil { + return err + } + + if len(t.CreatedAt) > 1000000 { + return xerrors.Errorf("Value in field t.CreatedAt was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.CreatedAt)); err != nil { + return err + } + return nil +} + +func (t *Knot) UnmarshalCBOR(r io.Reader) (err error) { + *t = Knot{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajMap { + return fmt.Errorf("cbor input should be of type map") + } + + if extra > cbg.MaxLength { + return fmt.Errorf("Knot: map struct too large (%d)", extra) + } + + n := extra + + nameBuf := make([]byte, 9) + for i := uint64(0); i < n; i++ { + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) + if err != nil { + return err + } + + if !ok { + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { + return err + } + continue + } + + switch string(nameBuf[:nameLen]) { + // t.LexiconTypeID (string) (string) + case "$type": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.LexiconTypeID = string(sval) + } + // t.CreatedAt (string) (string) + case "createdAt": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.CreatedAt = string(sval) + } + + default: + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { + return err + } + } + } + + return nil +} func (t *KnotMember) MarshalCBOR(w io.Writer) error { if t == nil { _, err := w.Write(cbg.CborNull) diff --git a/api/tangled/knothealth.go b/api/tangled/knothealth.go deleted file mode 100644 --- a/api/tangled/knothealth.go +++ /dev/null @@ -1,35 +0,0 @@ -// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT. - -package tangled - -// schema: sh.tangled.knot.health - -import ( - "context" - - "github.com/bluesky-social/indigo/lex/util" -) - -const ( - KnotHealthNSID = "sh.tangled.knot.health" -) - -// KnotHealth_Output is the output of a sh.tangled.knot.health call. -type KnotHealth_Output struct { - // status: Health status of the knot - Status string `json:"status" cborgen:"status"` - // timestamp: Timestamp of the health check - Timestamp *string `json:"timestamp,omitempty" cborgen:"timestamp,omitempty"` - // version: Version of the knot server - Version *string `json:"version,omitempty" cborgen:"version,omitempty"` -} - -// KnotHealth calls the XRPC method "sh.tangled.knot.health". -func KnotHealth(ctx context.Context, c util.LexClient) (*KnotHealth_Output, error) { - var out KnotHealth_Output - if err := c.LexDo(ctx, util.Query, "", "sh.tangled.knot.health", nil, nil, &out); err != nil { - return nil, err - } - - return &out, nil -} diff --git a/api/tangled/tangledknot.go b/api/tangled/tangledknot.go new file mode 100644 --- /dev/null +++ b/api/tangled/tangledknot.go @@ -0,0 +1,22 @@ +// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT. + +package tangled + +// schema: sh.tangled.knot + +import ( + "github.com/bluesky-social/indigo/lex/util" +) + +const ( + KnotNSID = "sh.tangled.knot" +) + +func init() { + util.RegisterType("sh.tangled.knot", &Knot{}) +} // +// RECORDTYPE: Knot +type Knot struct { + LexiconTypeID string `json:"$type,const=sh.tangled.knot" cborgen:"$type,const=sh.tangled.knot"` + CreatedAt string `json:"createdAt" cborgen:"createdAt"` +} diff --git a/cmd/gen.go b/cmd/gen.go --- a/cmd/gen.go +++ b/cmd/gen.go @@ -24,6 +24,7 @@ tangled.GitRefUpdate_Meta_CommitCount_ByEmail_Elem{}, tangled.GitRefUpdate_Meta_LangBreakdown{}, tangled.GitRefUpdate_Pair{}, tangled.GraphFollow{}, + tangled.Knot{}, tangled.KnotMember{}, tangled.Pipeline{}, tangled.Pipeline_CloneOpts{}, -- tangled.sh