// Code generated by ogen, DO NOT EDIT.
package api
import (
"math/bits"
"strconv"
"github.com/go-faster/errors"
"github.com/go-faster/jx"
"github.com/ogen-go/ogen/validate"
)
// Encode implements json.Marshaler.
func (s *BatchUpdateRequest) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *BatchUpdateRequest) encodeFields(e *jx.Encoder) {
{
e.FieldStart("requests")
e.ArrStart()
for _, elem := range s.Requests {
elem.Encode(e)
}
e.ArrEnd()
}
}
var jsonFieldsNameOfBatchUpdateRequest = [1]string{
0: "requests",
}
// Decode decodes BatchUpdateRequest from json.
func (s *BatchUpdateRequest) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode BatchUpdateRequest to nil")
}
var requiredBitSet [1]uint8
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
switch string(k) {
case "requests":
requiredBitSet[0] |= 1 << 0
if err := func() error {
s.Requests = make([]BatchUpdateRequestRequestsItem, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem BatchUpdateRequestRequestsItem
if err := elem.Decode(d); err != nil {
return err
}
s.Requests = append(s.Requests, elem)
return nil
}); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"requests\"")
}
default:
return d.Skip()
}
return nil
}); err != nil {
return errors.Wrap(err, "decode BatchUpdateRequest")
}
// Validate required fields.
var failures []validate.FieldError
for i, mask := range [1]uint8{
0b00000001,
} {
if result := (requiredBitSet[i] & mask) ^ mask; result != 0 {
// Mask only required fields and check equality to mask using XOR.
//
// If XOR result is not zero, result is not equal to expected, so some fields are missed.
// Bits of fields which would be set are actually bits of missed fields.
missed := bits.OnesCount8(result)
for bitN := 0; bitN < missed; bitN++ {
bitIdx := bits.TrailingZeros8(result)
fieldIdx := i*8 + bitIdx
var name string
if fieldIdx < len(jsonFieldsNameOfBatchUpdateRequest) {
name = jsonFieldsNameOfBatchUpdateRequest[fieldIdx]
} else {
name = strconv.Itoa(fieldIdx)
}
failures = append(failures, validate.FieldError{
Name: name,
Error: validate.ErrFieldRequired,
})
// Reset bit.
result &^= 1 << bitIdx
}
}
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s *BatchUpdateRequest) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *BatchUpdateRequest) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s BatchUpdateRequestRequestsItem) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields implements json.Marshaler.
func (s BatchUpdateRequestRequestsItem) encodeFields(e *jx.Encoder) {
for k, elem := range s {
e.FieldStart(k)
if len(elem) != 0 {
e.Raw(elem)
}
}
}
// Decode decodes BatchUpdateRequestRequestsItem from json.
func (s *BatchUpdateRequestRequestsItem) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode BatchUpdateRequestRequestsItem to nil")
}
m := s.init()
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
var elem jx.Raw
if err := func() error {
v, err := d.RawAppend(nil)
elem = jx.Raw(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrapf(err, "decode field %q", k)
}
m[string(k)] = elem
return nil
}); err != nil {
return errors.Wrap(err, "decode BatchUpdateRequestRequestsItem")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s BatchUpdateRequestRequestsItem) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *BatchUpdateRequestRequestsItem) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *BatchUpdateResponse) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *BatchUpdateResponse) encodeFields(e *jx.Encoder) {
{
if s.DocumentId.Set {
e.FieldStart("documentId")
s.DocumentId.Encode(e)
}
}
{
if s.Replies != nil {
e.FieldStart("replies")
e.ArrStart()
for _, elem := range s.Replies {
elem.Encode(e)
}
e.ArrEnd()
}
}
{
if s.WriteControl.Set {
e.FieldStart("writeControl")
s.WriteControl.Encode(e)
}
}
}
var jsonFieldsNameOfBatchUpdateResponse = [3]string{
0: "documentId",
1: "replies",
2: "writeControl",
}
// Decode decodes BatchUpdateResponse from json.
func (s *BatchUpdateResponse) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode BatchUpdateResponse to nil")
}
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
switch string(k) {
case "documentId":
if err := func() error {
s.DocumentId.Reset()
if err := s.DocumentId.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"documentId\"")
}
case "replies":
if err := func() error {
s.Replies = make([]BatchUpdateResponseRepliesItem, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem BatchUpdateResponseRepliesItem
if err := elem.Decode(d); err != nil {
return err
}
s.Replies = append(s.Replies, elem)
return nil
}); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"replies\"")
}
case "writeControl":
if err := func() error {
s.WriteControl.Reset()
if err := s.WriteControl.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"writeControl\"")
}
default:
return d.Skip()
}
return nil
}); err != nil {
return errors.Wrap(err, "decode BatchUpdateResponse")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s *BatchUpdateResponse) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *BatchUpdateResponse) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s BatchUpdateResponseRepliesItem) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields implements json.Marshaler.
func (s BatchUpdateResponseRepliesItem) encodeFields(e *jx.Encoder) {
for k, elem := range s {
e.FieldStart(k)
if len(elem) != 0 {
e.Raw(elem)
}
}
}
// Decode decodes BatchUpdateResponseRepliesItem from json.
func (s *BatchUpdateResponseRepliesItem) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode BatchUpdateResponseRepliesItem to nil")
}
m := s.init()
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
var elem jx.Raw
if err := func() error {
v, err := d.RawAppend(nil)
elem = jx.Raw(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrapf(err, "decode field %q", k)
}
m[string(k)] = elem
return nil
}); err != nil {
return errors.Wrap(err, "decode BatchUpdateResponseRepliesItem")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s BatchUpdateResponseRepliesItem) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *BatchUpdateResponseRepliesItem) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s BatchUpdateResponseWriteControl) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields implements json.Marshaler.
func (s BatchUpdateResponseWriteControl) encodeFields(e *jx.Encoder) {
for k, elem := range s {
e.FieldStart(k)
if len(elem) != 0 {
e.Raw(elem)
}
}
}
// Decode decodes BatchUpdateResponseWriteControl from json.
func (s *BatchUpdateResponseWriteControl) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode BatchUpdateResponseWriteControl to nil")
}
m := s.init()
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
var elem jx.Raw
if err := func() error {
v, err := d.RawAppend(nil)
elem = jx.Raw(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrapf(err, "decode field %q", k)
}
m[string(k)] = elem
return nil
}); err != nil {
return errors.Wrap(err, "decode BatchUpdateResponseWriteControl")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s BatchUpdateResponseWriteControl) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *BatchUpdateResponseWriteControl) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *CreateDocumentRequest) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *CreateDocumentRequest) encodeFields(e *jx.Encoder) {
{
e.FieldStart("title")
e.Str(s.Title)
}
}
var jsonFieldsNameOfCreateDocumentRequest = [1]string{
0: "title",
}
// Decode decodes CreateDocumentRequest from json.
func (s *CreateDocumentRequest) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode CreateDocumentRequest to nil")
}
var requiredBitSet [1]uint8
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
switch string(k) {
case "title":
requiredBitSet[0] |= 1 << 0
if err := func() error {
v, err := d.Str()
s.Title = string(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"title\"")
}
default:
return d.Skip()
}
return nil
}); err != nil {
return errors.Wrap(err, "decode CreateDocumentRequest")
}
// Validate required fields.
var failures []validate.FieldError
for i, mask := range [1]uint8{
0b00000001,
} {
if result := (requiredBitSet[i] & mask) ^ mask; result != 0 {
// Mask only required fields and check equality to mask using XOR.
//
// If XOR result is not zero, result is not equal to expected, so some fields are missed.
// Bits of fields which would be set are actually bits of missed fields.
missed := bits.OnesCount8(result)
for bitN := 0; bitN < missed; bitN++ {
bitIdx := bits.TrailingZeros8(result)
fieldIdx := i*8 + bitIdx
var name string
if fieldIdx < len(jsonFieldsNameOfCreateDocumentRequest) {
name = jsonFieldsNameOfCreateDocumentRequest[fieldIdx]
} else {
name = strconv.Itoa(fieldIdx)
}
failures = append(failures, validate.FieldError{
Name: name,
Error: validate.ErrFieldRequired,
})
// Reset bit.
result &^= 1 << bitIdx
}
}
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s *CreateDocumentRequest) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *CreateDocumentRequest) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *Document) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *Document) encodeFields(e *jx.Encoder) {
{
if s.DocumentId.Set {
e.FieldStart("documentId")
s.DocumentId.Encode(e)
}
}
{
if s.Title.Set {
e.FieldStart("title")
s.Title.Encode(e)
}
}
{
if s.Body.Set {
e.FieldStart("body")
s.Body.Encode(e)
}
}
{
if s.Tabs != nil {
e.FieldStart("tabs")
e.ArrStart()
for _, elem := range s.Tabs {
elem.Encode(e)
}
e.ArrEnd()
}
}
{
if s.RevisionId.Set {
e.FieldStart("revisionId")
s.RevisionId.Encode(e)
}
}
{
if s.SuggestionsViewMode.Set {
e.FieldStart("suggestionsViewMode")
s.SuggestionsViewMode.Encode(e)
}
}
}
var jsonFieldsNameOfDocument = [6]string{
0: "documentId",
1: "title",
2: "body",
3: "tabs",
4: "revisionId",
5: "suggestionsViewMode",
}
// Decode decodes Document from json.
func (s *Document) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode Document to nil")
}
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
switch string(k) {
case "documentId":
if err := func() error {
s.DocumentId.Reset()
if err := s.DocumentId.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"documentId\"")
}
case "title":
if err := func() error {
s.Title.Reset()
if err := s.Title.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"title\"")
}
case "body":
if err := func() error {
s.Body.Reset()
if err := s.Body.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"body\"")
}
case "tabs":
if err := func() error {
s.Tabs = make([]DocumentTabsItem, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem DocumentTabsItem
if err := elem.Decode(d); err != nil {
return err
}
s.Tabs = append(s.Tabs, elem)
return nil
}); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"tabs\"")
}
case "revisionId":
if err := func() error {
s.RevisionId.Reset()
if err := s.RevisionId.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"revisionId\"")
}
case "suggestionsViewMode":
if err := func() error {
s.SuggestionsViewMode.Reset()
if err := s.SuggestionsViewMode.Decode(d); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"suggestionsViewMode\"")
}
default:
return d.Skip()
}
return nil
}); err != nil {
return errors.Wrap(err, "decode Document")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s *Document) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *Document) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s DocumentBody) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields implements json.Marshaler.
func (s DocumentBody) encodeFields(e *jx.Encoder) {
for k, elem := range s {
e.FieldStart(k)
if len(elem) != 0 {
e.Raw(elem)
}
}
}
// Decode decodes DocumentBody from json.
func (s *DocumentBody) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode DocumentBody to nil")
}
m := s.init()
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
var elem jx.Raw
if err := func() error {
v, err := d.RawAppend(nil)
elem = jx.Raw(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrapf(err, "decode field %q", k)
}
m[string(k)] = elem
return nil
}); err != nil {
return errors.Wrap(err, "decode DocumentBody")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s DocumentBody) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *DocumentBody) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s DocumentTabsItem) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields implements json.Marshaler.
func (s DocumentTabsItem) encodeFields(e *jx.Encoder) {
for k, elem := range s {
e.FieldStart(k)
if len(elem) != 0 {
e.Raw(elem)
}
}
}
// Decode decodes DocumentTabsItem from json.
func (s *DocumentTabsItem) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode DocumentTabsItem to nil")
}
m := s.init()
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
var elem jx.Raw
if err := func() error {
v, err := d.RawAppend(nil)
elem = jx.Raw(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrapf(err, "decode field %q", k)
}
m[string(k)] = elem
return nil
}); err != nil {
return errors.Wrap(err, "decode DocumentTabsItem")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s DocumentTabsItem) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *DocumentTabsItem) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes BatchUpdateResponseWriteControl as json.
func (o OptBatchUpdateResponseWriteControl) Encode(e *jx.Encoder) {
if !o.Set {
return
}
o.Value.Encode(e)
}
// Decode decodes BatchUpdateResponseWriteControl from json.
func (o *OptBatchUpdateResponseWriteControl) Decode(d *jx.Decoder) error {
if o == nil {
return errors.New("invalid: unable to decode OptBatchUpdateResponseWriteControl to nil")
}
o.Set = true
o.Value = make(BatchUpdateResponseWriteControl)
if err := o.Value.Decode(d); err != nil {
return err
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s OptBatchUpdateResponseWriteControl) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *OptBatchUpdateResponseWriteControl) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes DocumentBody as json.
func (o OptDocumentBody) Encode(e *jx.Encoder) {
if !o.Set {
return
}
o.Value.Encode(e)
}
// Decode decodes DocumentBody from json.
func (o *OptDocumentBody) Decode(d *jx.Decoder) error {
if o == nil {
return errors.New("invalid: unable to decode OptDocumentBody to nil")
}
o.Set = true
o.Value = make(DocumentBody)
if err := o.Value.Decode(d); err != nil {
return err
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s OptDocumentBody) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *OptDocumentBody) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes string as json.
func (o OptString) Encode(e *jx.Encoder) {
if !o.Set {
return
}
e.Str(string(o.Value))
}
// Decode decodes string from json.
func (o *OptString) Decode(d *jx.Decoder) error {
if o == nil {
return errors.New("invalid: unable to decode OptString to nil")
}
o.Set = true
v, err := d.Str()
if err != nil {
return err
}
o.Value = string(v)
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s OptString) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *OptString) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}