// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
package org_tangled
// schema: org.tangled.repo.artifact
import (
"bytes"
"encoding/json"
"fmt"
"io"
"github.com/bluesky-social/indigo/lex/util"
cbg "github.com/whyrusleeping/cbor-gen"
)
const (
RepoArtifactNSID = "org.tangled.repo.artifact"
)
func init() {
util.RegisterType("org.tangled.repo.artifact", &RepoArtifact{})
} //
// RECORDTYPE: RepoArtifact
type RepoArtifact struct {
LexiconTypeID string `json:"$type,const=org.tangled.repo.artifact" cborgen:"$type,const=org.tangled.repo.artifact"`
// artifact: the artifact
Artifact *util.LexBlob `json:"artifact" cborgen:"artifact"`
// createdAt: time of creation of this artifact
CreatedAt string `json:"createdAt" cborgen:"createdAt"`
// name: name of the artifact
Name string `json:"name" cborgen:"name"`
Subject *RepoArtifact_Subject `json:"subject" cborgen:"subject"`
}
type RepoArtifact_Subject struct {
GitOid *GitOid
}
func (t *RepoArtifact_Subject) MarshalJSON() ([]byte, error) {
if t.GitOid != nil {
t.GitOid.LexiconTypeID = "org.tangled.git.oid"
return json.Marshal(t.GitOid)
}
return nil, fmt.Errorf("cannot marshal empty enum")
}
func (t *RepoArtifact_Subject) UnmarshalJSON(b []byte) error {
typ, err := util.TypeExtract(b)
if err != nil {
return err
}
switch typ {
case "org.tangled.git.oid":
t.GitOid = new(GitOid)
return json.Unmarshal(b, t.GitOid)
default:
return nil
}
}
func (t *RepoArtifact_Subject) MarshalCBOR(w io.Writer) error {
if t == nil {
_, err := w.Write(cbg.CborNull)
return err
}
if t.GitOid != nil {
return t.GitOid.MarshalCBOR(w)
}
return fmt.Errorf("cannot cbor marshal empty enum")
}
func (t *RepoArtifact_Subject) UnmarshalCBOR(r io.Reader) error {
typ, b, err := util.CborTypeExtractReader(r)
if err != nil {
return err
}
switch typ {
case "org.tangled.git.oid":
t.GitOid = new(GitOid)
return t.GitOid.UnmarshalCBOR(bytes.NewReader(b))
default:
return nil
}
}