···2460246024612461 return nil
24622462}
24632463+func (t *GraphVouch) MarshalCBOR(w io.Writer) error {
24642464+ if t == nil {
24652465+ _, err := w.Write(cbg.CborNull)
24662466+ return err
24672467+ }
24682468+24692469+ cw := cbg.NewCborWriter(w)
24702470+ fieldCount := 4
24712471+24722472+ if t.Reason == nil {
24732473+ fieldCount--
24742474+ }
24752475+24762476+ if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil {
24772477+ return err
24782478+ }
24792479+24802480+ // t.Kind (string) (string)
24812481+ if len("kind") > 1000000 {
24822482+ return xerrors.Errorf("Value in field \"kind\" was too long")
24832483+ }
24842484+24852485+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("kind"))); err != nil {
24862486+ return err
24872487+ }
24882488+ if _, err := cw.WriteString(string("kind")); err != nil {
24892489+ return err
24902490+ }
24912491+24922492+ if len(t.Kind) > 1000000 {
24932493+ return xerrors.Errorf("Value in field t.Kind was too long")
24942494+ }
24952495+24962496+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Kind))); err != nil {
24972497+ return err
24982498+ }
24992499+ if _, err := cw.WriteString(string(t.Kind)); err != nil {
25002500+ return err
25012501+ }
25022502+25032503+ // t.LexiconTypeID (string) (string)
25042504+ if len("$type") > 1000000 {
25052505+ return xerrors.Errorf("Value in field \"$type\" was too long")
25062506+ }
25072507+25082508+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil {
25092509+ return err
25102510+ }
25112511+ if _, err := cw.WriteString(string("$type")); err != nil {
25122512+ return err
25132513+ }
25142514+25152515+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.graph.vouch"))); err != nil {
25162516+ return err
25172517+ }
25182518+ if _, err := cw.WriteString(string("sh.tangled.graph.vouch")); err != nil {
25192519+ return err
25202520+ }
25212521+25222522+ // t.Reason (string) (string)
25232523+ if t.Reason != nil {
25242524+25252525+ if len("reason") > 1000000 {
25262526+ return xerrors.Errorf("Value in field \"reason\" was too long")
25272527+ }
25282528+25292529+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("reason"))); err != nil {
25302530+ return err
25312531+ }
25322532+ if _, err := cw.WriteString(string("reason")); err != nil {
25332533+ return err
25342534+ }
25352535+25362536+ if t.Reason == nil {
25372537+ if _, err := cw.Write(cbg.CborNull); err != nil {
25382538+ return err
25392539+ }
25402540+ } else {
25412541+ if len(*t.Reason) > 1000000 {
25422542+ return xerrors.Errorf("Value in field t.Reason was too long")
25432543+ }
25442544+25452545+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Reason))); err != nil {
25462546+ return err
25472547+ }
25482548+ if _, err := cw.WriteString(string(*t.Reason)); err != nil {
25492549+ return err
25502550+ }
25512551+ }
25522552+ }
25532553+25542554+ // t.CreatedAt (string) (string)
25552555+ if len("createdAt") > 1000000 {
25562556+ return xerrors.Errorf("Value in field \"createdAt\" was too long")
25572557+ }
25582558+25592559+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil {
25602560+ return err
25612561+ }
25622562+ if _, err := cw.WriteString(string("createdAt")); err != nil {
25632563+ return err
25642564+ }
25652565+25662566+ if len(t.CreatedAt) > 1000000 {
25672567+ return xerrors.Errorf("Value in field t.CreatedAt was too long")
25682568+ }
25692569+25702570+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil {
25712571+ return err
25722572+ }
25732573+ if _, err := cw.WriteString(string(t.CreatedAt)); err != nil {
25742574+ return err
25752575+ }
25762576+ return nil
25772577+}
25782578+25792579+func (t *GraphVouch) UnmarshalCBOR(r io.Reader) (err error) {
25802580+ *t = GraphVouch{}
25812581+25822582+ cr := cbg.NewCborReader(r)
25832583+25842584+ maj, extra, err := cr.ReadHeader()
25852585+ if err != nil {
25862586+ return err
25872587+ }
25882588+ defer func() {
25892589+ if err == io.EOF {
25902590+ err = io.ErrUnexpectedEOF
25912591+ }
25922592+ }()
25932593+25942594+ if maj != cbg.MajMap {
25952595+ return fmt.Errorf("cbor input should be of type map")
25962596+ }
25972597+25982598+ if extra > cbg.MaxLength {
25992599+ return fmt.Errorf("GraphVouch: map struct too large (%d)", extra)
26002600+ }
26012601+26022602+ n := extra
26032603+26042604+ nameBuf := make([]byte, 9)
26052605+ for i := uint64(0); i < n; i++ {
26062606+ nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
26072607+ if err != nil {
26082608+ return err
26092609+ }
26102610+26112611+ if !ok {
26122612+ // Field doesn't exist on this type, so ignore it
26132613+ if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
26142614+ return err
26152615+ }
26162616+ continue
26172617+ }
26182618+26192619+ switch string(nameBuf[:nameLen]) {
26202620+ // t.Kind (string) (string)
26212621+ case "kind":
26222622+26232623+ {
26242624+ sval, err := cbg.ReadStringWithMax(cr, 1000000)
26252625+ if err != nil {
26262626+ return err
26272627+ }
26282628+26292629+ t.Kind = string(sval)
26302630+ }
26312631+ // t.LexiconTypeID (string) (string)
26322632+ case "$type":
26332633+26342634+ {
26352635+ sval, err := cbg.ReadStringWithMax(cr, 1000000)
26362636+ if err != nil {
26372637+ return err
26382638+ }
26392639+26402640+ t.LexiconTypeID = string(sval)
26412641+ }
26422642+ // t.Reason (string) (string)
26432643+ case "reason":
26442644+26452645+ {
26462646+ b, err := cr.ReadByte()
26472647+ if err != nil {
26482648+ return err
26492649+ }
26502650+ if b != cbg.CborNull[0] {
26512651+ if err := cr.UnreadByte(); err != nil {
26522652+ return err
26532653+ }
26542654+26552655+ sval, err := cbg.ReadStringWithMax(cr, 1000000)
26562656+ if err != nil {
26572657+ return err
26582658+ }
26592659+26602660+ t.Reason = (*string)(&sval)
26612661+ }
26622662+ }
26632663+ // t.CreatedAt (string) (string)
26642664+ case "createdAt":
26652665+26662666+ {
26672667+ sval, err := cbg.ReadStringWithMax(cr, 1000000)
26682668+ if err != nil {
26692669+ return err
26702670+ }
26712671+26722672+ t.CreatedAt = string(sval)
26732673+ }
26742674+26752675+ default:
26762676+ // Field doesn't exist on this type, so ignore it
26772677+ if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
26782678+ return err
26792679+ }
26802680+ }
26812681+ }
26822682+26832683+ return nil
26842684+}
24632685func (t *Knot) MarshalCBOR(w io.Writer) error {
24642686 if t == nil {
24652687 _, err := w.Write(cbg.CborNull)
···9520974295219743 return nil
95229744}
97459745+func (t *RepoPull_Round) MarshalCBOR(w io.Writer) error {
97469746+ if t == nil {
97479747+ _, err := w.Write(cbg.CborNull)
97489748+ return err
97499749+ }
97509750+97519751+ cw := cbg.NewCborWriter(w)
97529752+97539753+ if _, err := cw.Write([]byte{162}); err != nil {
97549754+ return err
97559755+ }
97569756+97579757+ // t.CreatedAt (string) (string)
97589758+ if len("createdAt") > 1000000 {
97599759+ return xerrors.Errorf("Value in field \"createdAt\" was too long")
97609760+ }
97619761+97629762+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil {
97639763+ return err
97649764+ }
97659765+ if _, err := cw.WriteString(string("createdAt")); err != nil {
97669766+ return err
97679767+ }
97689768+97699769+ if len(t.CreatedAt) > 1000000 {
97709770+ return xerrors.Errorf("Value in field t.CreatedAt was too long")
97719771+ }
97729772+97739773+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil {
97749774+ return err
97759775+ }
97769776+ if _, err := cw.WriteString(string(t.CreatedAt)); err != nil {
97779777+ return err
97789778+ }
97799779+97809780+ // t.PatchBlob (util.LexBlob) (struct)
97819781+ if len("patchBlob") > 1000000 {
97829782+ return xerrors.Errorf("Value in field \"patchBlob\" was too long")
97839783+ }
97849784+97859785+ if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("patchBlob"))); err != nil {
97869786+ return err
97879787+ }
97889788+ if _, err := cw.WriteString(string("patchBlob")); err != nil {
97899789+ return err
97909790+ }
97919791+97929792+ if err := t.PatchBlob.MarshalCBOR(cw); err != nil {
97939793+ return err
97949794+ }
97959795+ return nil
97969796+}
97979797+97989798+func (t *RepoPull_Round) UnmarshalCBOR(r io.Reader) (err error) {
97999799+ *t = RepoPull_Round{}
98009800+98019801+ cr := cbg.NewCborReader(r)
98029802+98039803+ maj, extra, err := cr.ReadHeader()
98049804+ if err != nil {
98059805+ return err
98069806+ }
98079807+ defer func() {
98089808+ if err == io.EOF {
98099809+ err = io.ErrUnexpectedEOF
98109810+ }
98119811+ }()
98129812+98139813+ if maj != cbg.MajMap {
98149814+ return fmt.Errorf("cbor input should be of type map")
98159815+ }
98169816+98179817+ if extra > cbg.MaxLength {
98189818+ return fmt.Errorf("RepoPull_Round: map struct too large (%d)", extra)
98199819+ }
98209820+98219821+ n := extra
98229822+98239823+ nameBuf := make([]byte, 9)
98249824+ for i := uint64(0); i < n; i++ {
98259825+ nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
98269826+ if err != nil {
98279827+ return err
98289828+ }
98299829+98309830+ if !ok {
98319831+ // Field doesn't exist on this type, so ignore it
98329832+ if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
98339833+ return err
98349834+ }
98359835+ continue
98369836+ }
98379837+98389838+ switch string(nameBuf[:nameLen]) {
98399839+ // t.CreatedAt (string) (string)
98409840+ case "createdAt":
98419841+98429842+ {
98439843+ sval, err := cbg.ReadStringWithMax(cr, 1000000)
98449844+ if err != nil {
98459845+ return err
98469846+ }
98479847+98489848+ t.CreatedAt = string(sval)
98499849+ }
98509850+ // t.PatchBlob (util.LexBlob) (struct)
98519851+ case "patchBlob":
98529852+98539853+ {
98549854+98559855+ b, err := cr.ReadByte()
98569856+ if err != nil {
98579857+ return err
98589858+ }
98599859+ if b != cbg.CborNull[0] {
98609860+ if err := cr.UnreadByte(); err != nil {
98619861+ return err
98629862+ }
98639863+ t.PatchBlob = new(util.LexBlob)
98649864+ if err := t.PatchBlob.UnmarshalCBOR(cr); err != nil {
98659865+ return xerrors.Errorf("unmarshaling t.PatchBlob pointer: %w", err)
98669866+ }
98679867+ }
98689868+98699869+ }
98709870+98719871+ default:
98729872+ // Field doesn't exist on this type, so ignore it
98739873+ if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
98749874+ return err
98759875+ }
98769876+ }
98779877+ }
98789878+98799879+ return nil
98809880+}
95239881func (t *RepoPull_Source) MarshalCBOR(w io.Writer) error {
95249882 if t == nil {
95259883 _, err := w.Write(cbg.CborNull)
···972310081972410082 t.RepoDid = (*string)(&sval)
972510083 }
97269726- }
97279727-97289728- default:
97299729- // Field doesn't exist on this type, so ignore it
97309730- if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
97319731- return err
97329732- }
97339733- }
97349734- }
97359735-97369736- return nil
97379737-}
97389738-func (t *RepoPull_Round) MarshalCBOR(w io.Writer) error {
97399739- if t == nil {
97409740- _, err := w.Write(cbg.CborNull)
97419741- return err
97429742- }
97439743-97449744- cw := cbg.NewCborWriter(w)
97459745-97469746- if _, err := cw.Write([]byte{162}); err != nil {
97479747- return err
97489748- }
97499749-97509750- // t.CreatedAt (string) (string)
97519751- if len("createdAt") > 1000000 {
97529752- return xerrors.Errorf("Value in field \"createdAt\" was too long")
97539753- }
97549754-97559755- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil {
97569756- return err
97579757- }
97589758- if _, err := cw.WriteString(string("createdAt")); err != nil {
97599759- return err
97609760- }
97619761-97629762- if len(t.CreatedAt) > 1000000 {
97639763- return xerrors.Errorf("Value in field t.CreatedAt was too long")
97649764- }
97659765-97669766- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil {
97679767- return err
97689768- }
97699769- if _, err := cw.WriteString(string(t.CreatedAt)); err != nil {
97709770- return err
97719771- }
97729772-97739773- // t.PatchBlob (util.LexBlob) (struct)
97749774- if len("patchBlob") > 1000000 {
97759775- return xerrors.Errorf("Value in field \"patchBlob\" was too long")
97769776- }
97779777-97789778- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("patchBlob"))); err != nil {
97799779- return err
97809780- }
97819781- if _, err := cw.WriteString(string("patchBlob")); err != nil {
97829782- return err
97839783- }
97849784-97859785- if err := t.PatchBlob.MarshalCBOR(cw); err != nil {
97869786- return err
97879787- }
97889788- return nil
97899789-}
97909790-97919791-func (t *RepoPull_Round) UnmarshalCBOR(r io.Reader) (err error) {
97929792- *t = RepoPull_Round{}
97939793-97949794- cr := cbg.NewCborReader(r)
97959795-97969796- maj, extra, err := cr.ReadHeader()
97979797- if err != nil {
97989798- return err
97999799- }
98009800- defer func() {
98019801- if err == io.EOF {
98029802- err = io.ErrUnexpectedEOF
98039803- }
98049804- }()
98059805-98069806- if maj != cbg.MajMap {
98079807- return fmt.Errorf("cbor input should be of type map")
98089808- }
98099809-98109810- if extra > cbg.MaxLength {
98119811- return fmt.Errorf("RepoPull_Round: map struct too large (%d)", extra)
98129812- }
98139813-98149814- n := extra
98159815-98169816- nameBuf := make([]byte, 9)
98179817- for i := uint64(0); i < n; i++ {
98189818- nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
98199819- if err != nil {
98209820- return err
98219821- }
98229822-98239823- if !ok {
98249824- // Field doesn't exist on this type, so ignore it
98259825- if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
98269826- return err
98279827- }
98289828- continue
98299829- }
98309830-98319831- switch string(nameBuf[:nameLen]) {
98329832- // t.CreatedAt (string) (string)
98339833- case "createdAt":
98349834-98359835- {
98369836- sval, err := cbg.ReadStringWithMax(cr, 1000000)
98379837- if err != nil {
98389838- return err
98399839- }
98409840-98419841- t.CreatedAt = string(sval)
98429842- }
98439843- // t.PatchBlob (util.LexBlob) (struct)
98449844- case "patchBlob":
98459845-98469846- {
98479847-98489848- b, err := cr.ReadByte()
98499849- if err != nil {
98509850- return err
98519851- }
98529852- if b != cbg.CborNull[0] {
98539853- if err := cr.UnreadByte(); err != nil {
98549854- return err
98559855- }
98569856- t.PatchBlob = new(util.LexBlob)
98579857- if err := t.PatchBlob.UnmarshalCBOR(cr); err != nil {
98589858- return xerrors.Errorf("unmarshaling t.PatchBlob pointer: %w", err)
98599859- }
98609860- }
98619861-986210084 }
986310085986410086 default:
···10810110321081111033 return nil
1081211034}
1081310813-func (t *GraphVouch) MarshalCBOR(w io.Writer) error {
1081410814- if t == nil {
1081510815- _, err := w.Write(cbg.CborNull)
1081610816- return err
1081710817- }
1081810818-1081910819- cw := cbg.NewCborWriter(w)
1082010820- fieldCount := 4
1082110821-1082210822- if t.Kind == nil {
1082310823- fieldCount--
1082410824- }
1082510825-1082610826- if t.Reason == nil {
1082710827- fieldCount--
1082810828- }
1082910829-1083010830- if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil {
1083110831- return err
1083210832- }
1083310833-1083410834- // t.Kind (string) (string)
1083510835- if t.Kind != nil {
1083610836-1083710837- if len("kind") > 1000000 {
1083810838- return xerrors.Errorf("Value in field \"kind\" was too long")
1083910839- }
1084010840-1084110841- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("kind"))); err != nil {
1084210842- return err
1084310843- }
1084410844- if _, err := cw.WriteString(string("kind")); err != nil {
1084510845- return err
1084610846- }
1084710847-1084810848- if t.Kind == nil {
1084910849- if _, err := cw.Write(cbg.CborNull); err != nil {
1085010850- return err
1085110851- }
1085210852- } else {
1085310853- if len(*t.Kind) > 1000000 {
1085410854- return xerrors.Errorf("Value in field t.Kind was too long")
1085510855- }
1085610856-1085710857- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Kind))); err != nil {
1085810858- return err
1085910859- }
1086010860- if _, err := cw.WriteString(string(*t.Kind)); err != nil {
1086110861- return err
1086210862- }
1086310863- }
1086410864- }
1086510865-1086610866- // t.LexiconTypeID (string) (string)
1086710867- if len("$type") > 1000000 {
1086810868- return xerrors.Errorf("Value in field \"$type\" was too long")
1086910869- }
1087010870-1087110871- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil {
1087210872- return err
1087310873- }
1087410874- if _, err := cw.WriteString(string("$type")); err != nil {
1087510875- return err
1087610876- }
1087710877-1087810878- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.graph.vouch"))); err != nil {
1087910879- return err
1088010880- }
1088110881- if _, err := cw.WriteString(string("sh.tangled.graph.vouch")); err != nil {
1088210882- return err
1088310883- }
1088410884-1088510885- // t.Reason (string) (string)
1088610886- if t.Reason != nil {
1088710887-1088810888- if len("reason") > 1000000 {
1088910889- return xerrors.Errorf("Value in field \"reason\" was too long")
1089010890- }
1089110891-1089210892- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("reason"))); err != nil {
1089310893- return err
1089410894- }
1089510895- if _, err := cw.WriteString(string("reason")); err != nil {
1089610896- return err
1089710897- }
1089810898-1089910899- if t.Reason == nil {
1090010900- if _, err := cw.Write(cbg.CborNull); err != nil {
1090110901- return err
1090210902- }
1090310903- } else {
1090410904- if len(*t.Reason) > 1000000 {
1090510905- return xerrors.Errorf("Value in field t.Reason was too long")
1090610906- }
1090710907-1090810908- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Reason))); err != nil {
1090910909- return err
1091010910- }
1091110911- if _, err := cw.WriteString(string(*t.Reason)); err != nil {
1091210912- return err
1091310913- }
1091410914- }
1091510915- }
1091610916-1091710917- // t.CreatedAt (string) (string)
1091810918- if len("createdAt") > 1000000 {
1091910919- return xerrors.Errorf("Value in field \"createdAt\" was too long")
1092010920- }
1092110921-1092210922- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil {
1092310923- return err
1092410924- }
1092510925- if _, err := cw.WriteString(string("createdAt")); err != nil {
1092610926- return err
1092710927- }
1092810928-1092910929- if len(t.CreatedAt) > 1000000 {
1093010930- return xerrors.Errorf("Value in field t.CreatedAt was too long")
1093110931- }
1093210932-1093310933- if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil {
1093410934- return err
1093510935- }
1093610936- if _, err := cw.WriteString(string(t.CreatedAt)); err != nil {
1093710937- return err
1093810938- }
1093910939- return nil
1094010940-}
1094110941-1094210942-func (t *GraphVouch) UnmarshalCBOR(r io.Reader) (err error) {
1094310943- *t = GraphVouch{}
1094410944-1094510945- cr := cbg.NewCborReader(r)
1094610946-1094710947- maj, extra, err := cr.ReadHeader()
1094810948- if err != nil {
1094910949- return err
1095010950- }
1095110951- defer func() {
1095210952- if err == io.EOF {
1095310953- err = io.ErrUnexpectedEOF
1095410954- }
1095510955- }()
1095610956-1095710957- if maj != cbg.MajMap {
1095810958- return fmt.Errorf("cbor input should be of type map")
1095910959- }
1096010960-1096110961- if extra > cbg.MaxLength {
1096210962- return fmt.Errorf("GraphVouch: map struct too large (%d)", extra)
1096310963- }
1096410964-1096510965- n := extra
1096610966-1096710967- nameBuf := make([]byte, 9)
1096810968- for i := uint64(0); i < n; i++ {
1096910969- nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000)
1097010970- if err != nil {
1097110971- return err
1097210972- }
1097310973-1097410974- if !ok {
1097510975- // Field doesn't exist on this type, so ignore it
1097610976- if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil {
1097710977- return err
1097810978- }
1097910979- continue
1098010980- }
1098110981-1098210982- switch string(nameBuf[:nameLen]) {
1098310983- // t.Kind (string) (string)
1098410984- case "kind":
1098510985-1098610986- {
1098710987- b, err := cr.ReadByte()
1098810988- if err != nil {
1098910989- return err
1099010990- }
1099110991- if b != cbg.CborNull[0] {
1099210992- if err := cr.UnreadByte(); err != nil {
1099310993- return err
1099410994- }
1099510995-1099610996- sval, err := cbg.ReadStringWithMax(cr, 1000000)
1099710997- if err != nil {
1099810998- return err
1099910999- }
1100011000-1100111001- t.Kind = (*string)(&sval)
1100211002- }
1100311003- }
1100411004- // t.LexiconTypeID (string) (string)
1100511005- case "$type":
1100611006-1100711007- {
1100811008- sval, err := cbg.ReadStringWithMax(cr, 1000000)
1100911009- if err != nil {
1101011010- return err
1101111011- }
1101211012-1101311013- t.LexiconTypeID = string(sval)
1101411014- }
1101511015- // t.Reason (string) (string)
1101611016- case "reason":
1101711017-1101811018- {
1101911019- b, err := cr.ReadByte()
1102011020- if err != nil {
1102111021- return err
1102211022- }
1102311023- if b != cbg.CborNull[0] {
1102411024- if err := cr.UnreadByte(); err != nil {
1102511025- return err
1102611026- }
1102711027-1102811028- sval, err := cbg.ReadStringWithMax(cr, 1000000)
1102911029- if err != nil {
1103011030- return err
1103111031- }
1103211032-1103311033- t.Reason = (*string)(&sval)
1103411034- }
1103511035- }
1103611036- // t.CreatedAt (string) (string)
1103711037- case "createdAt":
1103811038-1103911039- {
1104011040- sval, err := cbg.ReadStringWithMax(cr, 1000000)
1104111041- if err != nil {
1104211042- return err
1104311043- }
1104411044-1104511045- t.CreatedAt = string(sval)
1104611046- }
1104711047-1104811048- default:
1104911049- // Field doesn't exist on this type, so ignore it
1105011050- if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil {
1105111051- return err
1105211052- }
1105311053- }
1105411054- }
1105511055-1105611056- return nil
1105711057-}
+1-1
api/tangled/graphvouch.go
···2020 LexiconTypeID string `json:"$type,const=sh.tangled.graph.vouch" cborgen:"$type,const=sh.tangled.graph.vouch"`
2121 CreatedAt string `json:"createdAt" cborgen:"createdAt"`
2222 // kind: Whether this user is being vouched for or denounced
2323- Kind *string `json:"kind,omitempty" cborgen:"kind,omitempty"`
2323+ Kind string `json:"kind" cborgen:"kind"`
2424 // reason: The reason for this vouch/denouncement
2525 Reason *string `json:"reason,omitempty" cborgen:"reason,omitempty"`
2626}
+1
appview/db/db.go
···9595 create table if not exists vouches (
9696 did text not null,
9797 subject_did text not null,
9898+ cid text not null,
9899 kind text not null default 'vouch',
99100 reason text,
100101 created_at text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
+38-106
appview/db/vouch.go
···77 "strings"
88 "time"
991010+ "github.com/ipfs/go-cid"
1011 "tangled.org/core/appview/models"
1112 "tangled.org/core/orm"
1213)
13141415func AddVouch(e Execer, vouch *models.Vouch) error {
1515- query := `insert or replace into vouches (did, subject_did, kind, reason) values (?, ?, ?, ?)`
1616- _, err := e.Exec(query, vouch.Did, vouch.SubjectDid, vouch.Kind, vouch.Reason)
1616+ query := `insert or replace into vouches (did, subject_did, cid, kind, reason) values (?, ?, ?, ?, ?)`
1717+ _, err := e.Exec(query, vouch.Did, vouch.SubjectDid, vouch.Cid.String(), vouch.Kind, vouch.Reason)
1718 return err
1819}
1920···4950 }
50515152 query := fmt.Sprintf(
5252- `select did, subject_did, kind, reason, created_at
5353+ `select did, subject_did, cid, kind, reason, created_at
5354 from vouches
5455 %s
5556 order by created_at desc
···6566 for rows.Next() {
6667 var vouch models.Vouch
6768 var createdAt string
6969+ var cidStr string
6870 var reason sql.NullString
6971 err := rows.Scan(
7072 &vouch.Did,
7173 &vouch.SubjectDid,
7474+ &cidStr,
7275 &vouch.Kind,
7376 &reason,
7477 &createdAt,
···7679 if err != nil {
7780 return nil, err
7881 }
8282+8383+ vouch.Cid, err = cid.Parse(cidStr)
8484+ if err != nil {
8585+ log.Println("unable to parse CID:", err)
8686+ continue
8787+ }
8888+7989 createdAtTime, err := time.Parse(time.RFC3339, createdAt)
8090 if err != nil {
8191 log.Println("unable to determine created at time")
···101111 return err
102112}
103113104104-func GetVouchStats(e Execer, did string) (models.VouchStats, error) {
105105- var vouches, denounces int64
106106- err := e.QueryRow(
107107- `SELECT
108108- COUNT(CASE WHEN kind = 'vouch' THEN 1 END) AS vouches,
109109- COUNT(CASE WHEN kind = 'denounce' THEN 1 END) AS denounces
110110- FROM vouches
111111- WHERE subject_did = ?`, did).Scan(&vouches, &denounces)
112112- if err != nil {
113113- return models.VouchStats{}, err
114114- }
115115- return models.VouchStats{
116116- Vouches: vouches,
117117- Denounces: denounces,
118118- }, nil
119119-}
120120-121114func GetVouchStatsBatch(e Execer, dids []string) (map[string]models.VouchStats, error) {
122115 if len(dids) == 0 {
123116 return nil, nil
···181174 return GetVouches(e, 0, orm.FilterEq("subject_did", did))
182175}
183176184184-// GetNetworkVouchesForSubject returns vouches for subjectDid from people that viewerDid follows or vouches for
185177func GetNetworkVouchesForSubject(e Execer, viewerDid, subjectDid string, limit int) ([]models.Vouch, error) {
186178 query := `
187187- select distinct v.did, v.subject_did, v.kind, v.reason, v.created_at
179179+ select distinct v.did, v.subject_did, v.cid, v.kind, v.reason, v.created_at
188180 from vouches v
189181 where v.subject_did = ?
190190- and v.kind = 'vouch'
191182 and v.did in (
192192- select subject_did from follows where user_did = ?
193193- union
194183 select subject_did from vouches where did = ? and kind = 'vouch'
195184 )
196185 order by v.created_at desc
···212201 for rows.Next() {
213202 var vouch models.Vouch
214203 var createdAt string
204204+ var cidStr string
215205 var reason sql.NullString
216206 err := rows.Scan(
217207 &vouch.Did,
218208 &vouch.SubjectDid,
209209+ &cidStr,
219210 &vouch.Kind,
220211 &reason,
221212 &createdAt,
···223214 if err != nil {
224215 return nil, err
225216 }
217217+218218+ vouch.Cid, err = cid.Parse(cidStr)
219219+ if err != nil {
220220+ log.Println("unable to parse CID:", err)
221221+ continue
222222+ }
223223+226224 createdAtTime, err := time.Parse(time.RFC3339, createdAt)
227225 if err != nil {
228226 log.Println("unable to determine created at time")
···238236 return vouches, nil
239237}
240238241241-// GetNetworkDenouncesForSubject returns denounces for subjectDid from people that viewerDid follows or vouches for
242242-func GetNetworkDenouncesForSubject(e Execer, viewerDid, subjectDid string, limit int) ([]models.Vouch, error) {
243243- query := `
244244- select distinct v.did, v.subject_did, v.kind, v.reason, v.created_at
245245- from vouches v
246246- where v.subject_did = ?
247247- and v.kind = 'denounce'
248248- and v.did in (
249249- select subject_did from follows where user_did = ?
250250- union
251251- select subject_did from vouches where did = ? and kind = 'vouch'
252252- )
253253- order by v.created_at desc
254254- `
255255- args := []any{subjectDid, viewerDid, viewerDid}
256256-257257- if limit > 0 {
258258- query += " limit ?"
259259- args = append(args, limit)
239239+func GetVouchRelationship(e Execer, viewerDid, subjectDid string) (*models.VouchRelationship, error) {
240240+ relationship := &models.VouchRelationship{
241241+ ViewerDid: viewerDid,
242242+ SubjectDid: subjectDid,
243243+ NetworkVouches: []models.Vouch{},
260244 }
261245262262- rows, err := e.Query(query, args...)
263263- if err != nil {
246246+ // Get direct vouch from viewer to subject (if exists)
247247+ directVouch, err := GetVouch(e, viewerDid, subjectDid)
248248+ if err == nil {
249249+ relationship.NetworkVouches = append(relationship.NetworkVouches, *directVouch)
250250+ } else if err != sql.ErrNoRows {
264251 return nil, err
265252 }
266266- defer rows.Close()
267253268268- var vouches []models.Vouch
269269- for rows.Next() {
270270- var vouch models.Vouch
271271- var createdAt string
272272- var reason sql.NullString
273273- err := rows.Scan(
274274- &vouch.Did,
275275- &vouch.SubjectDid,
276276- &vouch.Kind,
277277- &reason,
278278- &createdAt,
279279- )
280280- if err != nil {
281281- return nil, err
282282- }
283283- createdAtTime, err := time.Parse(time.RFC3339, createdAt)
284284- if err != nil {
285285- log.Println("unable to determine created at time")
286286- vouch.CreatedAt = time.Now()
287287- } else {
288288- vouch.CreatedAt = createdAtTime
289289- }
290290- if reason.Valid {
291291- vouch.Reason = &reason.String
292292- }
293293- vouches = append(vouches, vouch)
254254+ networkVouches, err := GetNetworkVouchesForSubject(e, viewerDid, subjectDid, 0)
255255+ if err != nil {
256256+ return nil, err
294257 }
295295- return vouches, nil
296296-}
297258298298-// CountNetworkVouchesForSubject returns count of vouches for subjectDid from viewerDid's network
299299-func CountNetworkVouchesForSubject(e Execer, viewerDid, subjectDid string) (int64, error) {
300300- var count int64
301301- err := e.QueryRow(`
302302- select count(distinct v.did)
303303- from vouches v
304304- where v.subject_did = ?
305305- and v.kind = 'vouch'
306306- and v.did in (
307307- select subject_did from follows where user_did = ?
308308- union
309309- select subject_did from vouches where did = ? and kind = 'vouch'
310310- )
311311- `, subjectDid, viewerDid, viewerDid).Scan(&count)
312312- return count, err
313313-}
259259+ relationship.NetworkVouches = append(relationship.NetworkVouches, networkVouches...)
314260315315-// CountNetworkDenouncesForSubject returns count of denounces for subjectDid from viewerDid's network
316316-func CountNetworkDenouncesForSubject(e Execer, viewerDid, subjectDid string) (int64, error) {
317317- var count int64
318318- err := e.QueryRow(`
319319- select count(distinct v.did)
320320- from vouches v
321321- where v.subject_did = ?
322322- and v.kind = 'denounce'
323323- and v.did in (
324324- select subject_did from follows where user_did = ?
325325- union
326326- select subject_did from vouches where did = ? and kind = 'vouch'
327327- )
328328- `, subjectDid, viewerDid, viewerDid).Scan(&count)
329329- return count, err
261261+ return relationship, nil
330262}