2022-08-31 06:18:14 +00:00
|
|
|
// Code generated by ogen, DO NOT EDIT.
|
|
|
|
|
|
|
|
package ogent
|
|
|
|
|
|
|
|
import (
|
|
|
|
"math/bits"
|
|
|
|
"strconv"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/go-faster/errors"
|
|
|
|
"github.com/go-faster/jx"
|
2022-08-31 07:49:08 +00:00
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
"github.com/ogen-go/ogen/json"
|
|
|
|
"github.com/ogen-go/ogen/validate"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CardCreate) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CardCreate) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Card.Set {
|
|
|
|
e.FieldStart("card")
|
|
|
|
s.Card.Encode(e)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Status.Set {
|
|
|
|
e.FieldStart("status")
|
|
|
|
s.Status.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Cp.Set {
|
|
|
|
e.FieldStart("cp")
|
|
|
|
s.Cp.Encode(e)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.URL.Set {
|
|
|
|
e.FieldStart("url")
|
|
|
|
s.URL.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
var jsonFieldsNameOfCardCreate = [6]string{
|
|
|
|
0: "id",
|
|
|
|
1: "card",
|
|
|
|
2: "status",
|
|
|
|
3: "cp",
|
|
|
|
4: "url",
|
|
|
|
5: "created_at",
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Decode decodes CardCreate from json.
|
|
|
|
func (s *CardCreate) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CardCreate to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
var requiredBitSet [1]uint8
|
2022-08-31 06:18:14 +00:00
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "id":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "card":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Card.Reset()
|
|
|
|
if err := s.Card.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "status":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Status.Reset()
|
|
|
|
if err := s.Status.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "cp":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Cp.Reset()
|
|
|
|
if err := s.Cp.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"cp\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "url":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.URL.Reset()
|
|
|
|
if err := s.URL.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"url\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode CardCreate")
|
|
|
|
}
|
|
|
|
// 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(jsonFieldsNameOfCardCreate) {
|
|
|
|
name = jsonFieldsNameOfCardCreate[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CardCreate) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CardCreate) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *CardList) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CardList) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Card.Set {
|
|
|
|
e.FieldStart("card")
|
|
|
|
s.Card.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Status.Set {
|
|
|
|
e.FieldStart("status")
|
|
|
|
s.Status.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Cp.Set {
|
|
|
|
e.FieldStart("cp")
|
|
|
|
s.Cp.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.URL.Set {
|
|
|
|
e.FieldStart("url")
|
|
|
|
s.URL.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfCardList = [6]string{
|
|
|
|
0: "id",
|
|
|
|
1: "card",
|
|
|
|
2: "status",
|
|
|
|
3: "cp",
|
|
|
|
4: "url",
|
|
|
|
5: "created_at",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes CardList from json.
|
|
|
|
func (s *CardList) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode CardList to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "card":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Card.Reset()
|
|
|
|
if err := s.Card.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
if err := func() error {
|
|
|
|
s.Status.Reset()
|
|
|
|
if err := s.Status.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "cp":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Cp.Reset()
|
|
|
|
if err := s.Cp.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"cp\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "url":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.URL.Reset()
|
|
|
|
if err := s.URL.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"url\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode CardList")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
2022-08-31 07:49:08 +00:00
|
|
|
for i, mask := range [1]uint8{
|
2022-08-31 06:18:14 +00:00
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfCardList) {
|
|
|
|
name = jsonFieldsNameOfCardList[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CardList) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CardList) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CardOwnerRead) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CardOwnerRead) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfCardOwnerRead = [7]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "id",
|
|
|
|
1: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
2: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
3: "delete",
|
|
|
|
4: "created_at",
|
|
|
|
5: "updated_at",
|
|
|
|
6: "next",
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Decode decodes CardOwnerRead from json.
|
|
|
|
func (s *CardOwnerRead) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CardOwnerRead to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "id":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.ID = int(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "username":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Username = string(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
|
|
|
}
|
|
|
|
case "updated_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
|
|
|
}
|
|
|
|
case "next":
|
|
|
|
if err := func() error {
|
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode CardOwnerRead")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfCardOwnerRead) {
|
|
|
|
name = jsonFieldsNameOfCardOwnerRead[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CardOwnerRead) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CardOwnerRead) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CardRead) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CardRead) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Card.Set {
|
|
|
|
e.FieldStart("card")
|
|
|
|
s.Card.Encode(e)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Status.Set {
|
|
|
|
e.FieldStart("status")
|
|
|
|
s.Status.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Cp.Set {
|
|
|
|
e.FieldStart("cp")
|
|
|
|
s.Cp.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.URL.Set {
|
|
|
|
e.FieldStart("url")
|
|
|
|
s.URL.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
var jsonFieldsNameOfCardRead = [6]string{
|
|
|
|
0: "id",
|
|
|
|
1: "card",
|
|
|
|
2: "status",
|
|
|
|
3: "cp",
|
|
|
|
4: "url",
|
|
|
|
5: "created_at",
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Decode decodes CardRead from json.
|
|
|
|
func (s *CardRead) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CardRead to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "id":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.ID = int(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "card":
|
|
|
|
if err := func() error {
|
|
|
|
s.Card.Reset()
|
|
|
|
if err := s.Card.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Status.Reset()
|
|
|
|
if err := s.Status.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "cp":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Cp.Reset()
|
|
|
|
if err := s.Cp.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"cp\"")
|
|
|
|
}
|
|
|
|
case "url":
|
|
|
|
if err := func() error {
|
|
|
|
s.URL.Reset()
|
|
|
|
if err := s.URL.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"url\"")
|
|
|
|
}
|
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode CardRead")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
2022-08-31 07:49:08 +00:00
|
|
|
0b00000001,
|
2022-08-31 06:18:14 +00:00
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfCardRead) {
|
|
|
|
name = jsonFieldsNameOfCardRead[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CardRead) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CardRead) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CardUpdate) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CardUpdate) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Card.Set {
|
|
|
|
e.FieldStart("card")
|
|
|
|
s.Card.Encode(e)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Status.Set {
|
|
|
|
e.FieldStart("status")
|
|
|
|
s.Status.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Cp.Set {
|
|
|
|
e.FieldStart("cp")
|
|
|
|
s.Cp.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.URL.Set {
|
|
|
|
e.FieldStart("url")
|
|
|
|
s.URL.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
var jsonFieldsNameOfCardUpdate = [6]string{
|
|
|
|
0: "id",
|
|
|
|
1: "card",
|
|
|
|
2: "status",
|
|
|
|
3: "cp",
|
|
|
|
4: "url",
|
|
|
|
5: "created_at",
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Decode decodes CardUpdate from json.
|
|
|
|
func (s *CardUpdate) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CardUpdate to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "id":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.ID = int(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "card":
|
|
|
|
if err := func() error {
|
|
|
|
s.Card.Reset()
|
|
|
|
if err := s.Card.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Status.Reset()
|
|
|
|
if err := s.Status.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "cp":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Cp.Reset()
|
|
|
|
if err := s.Cp.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"cp\"")
|
|
|
|
}
|
|
|
|
case "url":
|
|
|
|
if err := func() error {
|
|
|
|
s.URL.Reset()
|
|
|
|
if err := s.URL.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"url\"")
|
|
|
|
}
|
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode CardUpdate")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
2022-08-31 07:49:08 +00:00
|
|
|
0b00000001,
|
2022-08-31 06:18:14 +00:00
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfCardUpdate) {
|
|
|
|
name = jsonFieldsNameOfCardUpdate[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CardUpdate) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CardUpdate) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CreateCardReq) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CreateCardReq) encodeFields(e *jx.Encoder) {
|
2023-04-05 06:05:14 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("password")
|
|
|
|
e.Str(s.Password)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Card.Set {
|
|
|
|
e.FieldStart("card")
|
|
|
|
s.Card.Encode(e)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Status.Set {
|
|
|
|
e.FieldStart("status")
|
|
|
|
s.Status.Encode(e)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Cp.Set {
|
|
|
|
e.FieldStart("cp")
|
|
|
|
s.Cp.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.URL.Set {
|
|
|
|
e.FieldStart("url")
|
|
|
|
s.URL.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("owner")
|
|
|
|
e.Int(s.Owner)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2023-04-05 06:05:14 +00:00
|
|
|
var jsonFieldsNameOfCreateCardReq = [7]string{
|
|
|
|
0: "password",
|
|
|
|
1: "card",
|
|
|
|
2: "status",
|
|
|
|
3: "cp",
|
|
|
|
4: "url",
|
|
|
|
5: "created_at",
|
|
|
|
6: "owner",
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Decode decodes CreateCardReq from json.
|
|
|
|
func (s *CreateCardReq) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CreateCardReq to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2023-04-05 06:05:14 +00:00
|
|
|
case "password":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Password = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"password\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "card":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Card.Reset()
|
|
|
|
if err := s.Card.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Status.Reset()
|
|
|
|
if err := s.Status.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "cp":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Cp.Reset()
|
|
|
|
if err := s.Cp.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"cp\"")
|
|
|
|
}
|
|
|
|
case "url":
|
|
|
|
if err := func() error {
|
|
|
|
s.URL.Reset()
|
|
|
|
if err := s.URL.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"url\"")
|
|
|
|
}
|
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
|
|
|
}
|
|
|
|
case "owner":
|
2023-04-05 06:05:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 6
|
2022-08-31 07:49:08 +00:00
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.Owner = int(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"owner\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode CreateCardReq")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
2023-04-05 06:05:14 +00:00
|
|
|
0b01000001,
|
2022-08-31 06:18:14 +00:00
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfCreateCardReq) {
|
|
|
|
name = jsonFieldsNameOfCreateCardReq[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CreateCardReq) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CreateCardReq) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CreateGroupReq) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CreateGroupReq) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
e.FieldStart("name")
|
|
|
|
e.Str(s.Name)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-05 06:05:14 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("password")
|
|
|
|
e.Str(s.Password)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Users != nil {
|
|
|
|
e.FieldStart("users")
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range s.Users {
|
|
|
|
e.Int(elem)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-04-05 06:05:14 +00:00
|
|
|
var jsonFieldsNameOfCreateGroupReq = [3]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "name",
|
2023-04-05 06:05:14 +00:00
|
|
|
1: "password",
|
|
|
|
2: "users",
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Decode decodes CreateGroupReq from json.
|
|
|
|
func (s *CreateGroupReq) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CreateGroupReq to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
var requiredBitSet [1]uint8
|
2022-08-31 06:18:14 +00:00
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "name":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Str()
|
|
|
|
s.Name = string(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"name\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-05 06:05:14 +00:00
|
|
|
case "password":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Password = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"password\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "users":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Users = make([]int, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem int
|
|
|
|
v, err := d.Int()
|
|
|
|
elem = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
s.Users = append(s.Users, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"users\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode CreateGroupReq")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
2023-04-05 06:05:14 +00:00
|
|
|
0b00000011,
|
2022-08-31 07:49:08 +00:00
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfCreateGroupReq) {
|
|
|
|
name = jsonFieldsNameOfCreateGroupReq[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CreateGroupReq) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CreateGroupReq) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *CreateUserReq) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *CreateUserReq) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-04-18 12:18:38 +00:00
|
|
|
{
|
|
|
|
if s.Token.Set {
|
|
|
|
e.FieldStart("token")
|
|
|
|
s.Token.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-04-05 06:05:14 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("password")
|
|
|
|
e.Str(s.Password)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Card != nil {
|
|
|
|
e.FieldStart("card")
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range s.Card {
|
|
|
|
e.Int(elem)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfCreateUserReq = [9]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
1: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
2: "delete",
|
|
|
|
3: "token",
|
|
|
|
4: "password",
|
|
|
|
5: "created_at",
|
|
|
|
6: "updated_at",
|
|
|
|
7: "next",
|
|
|
|
8: "card",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes CreateUserReq from json.
|
|
|
|
func (s *CreateUserReq) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode CreateUserReq to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
var requiredBitSet [2]uint8
|
2022-08-31 06:18:14 +00:00
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "username":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Username = string(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2023-04-18 12:18:38 +00:00
|
|
|
case "token":
|
|
|
|
if err := func() error {
|
|
|
|
s.Token.Reset()
|
|
|
|
if err := s.Token.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"token\"")
|
|
|
|
}
|
2023-04-05 06:05:14 +00:00
|
|
|
case "password":
|
2023-05-01 14:00:17 +00:00
|
|
|
requiredBitSet[0] |= 1 << 4
|
2023-04-05 06:05:14 +00:00
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Password = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"password\"")
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "updated_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "next":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "card":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Card = make([]int, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem int
|
|
|
|
v, err := d.Int()
|
|
|
|
elem = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
s.Card = append(s.Card, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode CreateUserReq")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
2023-05-01 14:00:17 +00:00
|
|
|
for i, mask := range [2]uint8{
|
|
|
|
0b00010001,
|
|
|
|
0b00000000,
|
2022-08-31 06:18:14 +00:00
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfCreateUserReq) {
|
|
|
|
name = jsonFieldsNameOfCreateUserReq[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *CreateUserReq) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *CreateUserReq) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *GroupCreate) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *GroupCreate) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("name")
|
|
|
|
e.Str(s.Name)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfGroupCreate = [2]string{
|
|
|
|
0: "id",
|
|
|
|
1: "name",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes GroupCreate from json.
|
|
|
|
func (s *GroupCreate) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode GroupCreate to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "name":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Name = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"name\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode GroupCreate")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfGroupCreate) {
|
|
|
|
name = jsonFieldsNameOfGroupCreate[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 *GroupCreate) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *GroupCreate) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *GroupList) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *GroupList) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("name")
|
|
|
|
e.Str(s.Name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfGroupList = [2]string{
|
|
|
|
0: "id",
|
|
|
|
1: "name",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes GroupList from json.
|
|
|
|
func (s *GroupList) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode GroupList to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "name":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Name = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"name\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode GroupList")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfGroupList) {
|
|
|
|
name = jsonFieldsNameOfGroupList[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 *GroupList) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *GroupList) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *GroupRead) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *GroupRead) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("name")
|
|
|
|
e.Str(s.Name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfGroupRead = [2]string{
|
|
|
|
0: "id",
|
|
|
|
1: "name",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes GroupRead from json.
|
|
|
|
func (s *GroupRead) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode GroupRead to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "name":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Name = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"name\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode GroupRead")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfGroupRead) {
|
|
|
|
name = jsonFieldsNameOfGroupRead[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 *GroupRead) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *GroupRead) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *GroupUpdate) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *GroupUpdate) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("name")
|
|
|
|
e.Str(s.Name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfGroupUpdate = [2]string{
|
|
|
|
0: "id",
|
|
|
|
1: "name",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes GroupUpdate from json.
|
|
|
|
func (s *GroupUpdate) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode GroupUpdate to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "name":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Name = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"name\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode GroupUpdate")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfGroupUpdate) {
|
|
|
|
name = jsonFieldsNameOfGroupUpdate[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 *GroupUpdate) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *GroupUpdate) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *GroupUsersList) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *GroupUsersList) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfGroupUsersList = [7]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "id",
|
|
|
|
1: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
2: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
3: "delete",
|
|
|
|
4: "created_at",
|
|
|
|
5: "updated_at",
|
|
|
|
6: "next",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes GroupUsersList from json.
|
|
|
|
func (s *GroupUsersList) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode GroupUsersList to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
|
|
|
case "username":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Username = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
|
|
|
}
|
|
|
|
case "updated_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
|
|
|
}
|
|
|
|
case "next":
|
|
|
|
if err := func() error {
|
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode GroupUsersList")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfGroupUsersList) {
|
|
|
|
name = jsonFieldsNameOfGroupUsersList[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 *GroupUsersList) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *GroupUsersList) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode encodes ListCardOKApplicationJSON as json.
|
|
|
|
func (s ListCardOKApplicationJSON) Encode(e *jx.Encoder) {
|
|
|
|
unwrapped := []CardList(s)
|
|
|
|
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range unwrapped {
|
|
|
|
elem.Encode(e)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes ListCardOKApplicationJSON from json.
|
|
|
|
func (s *ListCardOKApplicationJSON) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode ListCardOKApplicationJSON to nil")
|
|
|
|
}
|
|
|
|
var unwrapped []CardList
|
|
|
|
if err := func() error {
|
|
|
|
unwrapped = make([]CardList, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem CardList
|
|
|
|
if err := elem.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
unwrapped = append(unwrapped, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "alias")
|
|
|
|
}
|
|
|
|
*s = ListCardOKApplicationJSON(unwrapped)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s ListCardOKApplicationJSON) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *ListCardOKApplicationJSON) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode encodes ListGroupOKApplicationJSON as json.
|
|
|
|
func (s ListGroupOKApplicationJSON) Encode(e *jx.Encoder) {
|
|
|
|
unwrapped := []GroupList(s)
|
|
|
|
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range unwrapped {
|
|
|
|
elem.Encode(e)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes ListGroupOKApplicationJSON from json.
|
|
|
|
func (s *ListGroupOKApplicationJSON) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode ListGroupOKApplicationJSON to nil")
|
|
|
|
}
|
|
|
|
var unwrapped []GroupList
|
|
|
|
if err := func() error {
|
|
|
|
unwrapped = make([]GroupList, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem GroupList
|
|
|
|
if err := elem.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
unwrapped = append(unwrapped, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "alias")
|
|
|
|
}
|
|
|
|
*s = ListGroupOKApplicationJSON(unwrapped)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s ListGroupOKApplicationJSON) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *ListGroupOKApplicationJSON) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode encodes ListGroupUsersOKApplicationJSON as json.
|
|
|
|
func (s ListGroupUsersOKApplicationJSON) Encode(e *jx.Encoder) {
|
|
|
|
unwrapped := []GroupUsersList(s)
|
|
|
|
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range unwrapped {
|
|
|
|
elem.Encode(e)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes ListGroupUsersOKApplicationJSON from json.
|
|
|
|
func (s *ListGroupUsersOKApplicationJSON) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode ListGroupUsersOKApplicationJSON to nil")
|
|
|
|
}
|
|
|
|
var unwrapped []GroupUsersList
|
|
|
|
if err := func() error {
|
|
|
|
unwrapped = make([]GroupUsersList, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem GroupUsersList
|
|
|
|
if err := elem.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
unwrapped = append(unwrapped, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "alias")
|
|
|
|
}
|
|
|
|
*s = ListGroupUsersOKApplicationJSON(unwrapped)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s ListGroupUsersOKApplicationJSON) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *ListGroupUsersOKApplicationJSON) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode encodes ListUserCardOKApplicationJSON as json.
|
|
|
|
func (s ListUserCardOKApplicationJSON) Encode(e *jx.Encoder) {
|
|
|
|
unwrapped := []UserCardList(s)
|
|
|
|
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range unwrapped {
|
|
|
|
elem.Encode(e)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes ListUserCardOKApplicationJSON from json.
|
|
|
|
func (s *ListUserCardOKApplicationJSON) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode ListUserCardOKApplicationJSON to nil")
|
|
|
|
}
|
|
|
|
var unwrapped []UserCardList
|
|
|
|
if err := func() error {
|
|
|
|
unwrapped = make([]UserCardList, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem UserCardList
|
|
|
|
if err := elem.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
unwrapped = append(unwrapped, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "alias")
|
|
|
|
}
|
|
|
|
*s = ListUserCardOKApplicationJSON(unwrapped)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s ListUserCardOKApplicationJSON) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *ListUserCardOKApplicationJSON) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode encodes ListUserOKApplicationJSON as json.
|
|
|
|
func (s ListUserOKApplicationJSON) Encode(e *jx.Encoder) {
|
|
|
|
unwrapped := []UserList(s)
|
|
|
|
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range unwrapped {
|
|
|
|
elem.Encode(e)
|
|
|
|
}
|
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes ListUserOKApplicationJSON from json.
|
|
|
|
func (s *ListUserOKApplicationJSON) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode ListUserOKApplicationJSON to nil")
|
|
|
|
}
|
|
|
|
var unwrapped []UserList
|
|
|
|
if err := func() error {
|
|
|
|
unwrapped = make([]UserList, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem UserList
|
|
|
|
if err := elem.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
unwrapped = append(unwrapped, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return err
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "alias")
|
|
|
|
}
|
|
|
|
*s = ListUserOKApplicationJSON(unwrapped)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s ListUserOKApplicationJSON) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *ListUserOKApplicationJSON) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
// Encode encodes bool as json.
|
|
|
|
func (o OptBool) Encode(e *jx.Encoder) {
|
|
|
|
if !o.Set {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
e.Bool(bool(o.Value))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes bool from json.
|
|
|
|
func (o *OptBool) Decode(d *jx.Decoder) error {
|
|
|
|
if o == nil {
|
|
|
|
return errors.New("invalid: unable to decode OptBool to nil")
|
|
|
|
}
|
|
|
|
o.Set = true
|
|
|
|
v, err := d.Bool()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
o.Value = bool(v)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s OptBool) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *OptBool) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// Encode encodes time.Time as json.
|
|
|
|
func (o OptDateTime) Encode(e *jx.Encoder, format func(*jx.Encoder, time.Time)) {
|
|
|
|
if !o.Set {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
format(e, o.Value)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes time.Time from json.
|
|
|
|
func (o *OptDateTime) Decode(d *jx.Decoder, format func(*jx.Decoder) (time.Time, error)) error {
|
|
|
|
if o == nil {
|
|
|
|
return errors.New("invalid: unable to decode OptDateTime to nil")
|
|
|
|
}
|
|
|
|
o.Set = true
|
|
|
|
v, err := format(d)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
o.Value = v
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s OptDateTime) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e, json.EncodeDateTime)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *OptDateTime) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d, json.DecodeDateTime)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode encodes int as json.
|
|
|
|
func (o OptInt) Encode(e *jx.Encoder) {
|
|
|
|
if !o.Set {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
e.Int(int(o.Value))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes int from json.
|
|
|
|
func (o *OptInt) Decode(d *jx.Decoder) error {
|
|
|
|
if o == nil {
|
|
|
|
return errors.New("invalid: unable to decode OptInt to nil")
|
|
|
|
}
|
|
|
|
o.Set = true
|
|
|
|
v, err := d.Int()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
o.Value = int(v)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s OptInt) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *OptInt) 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)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *R400) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *R400) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("code")
|
|
|
|
e.Int(s.Code)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
e.FieldStart("status")
|
|
|
|
e.Str(s.Status)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
if len(s.Errors) != 0 {
|
|
|
|
e.FieldStart("errors")
|
|
|
|
e.Raw(s.Errors)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfR400 = [3]string{
|
|
|
|
0: "code",
|
|
|
|
1: "status",
|
|
|
|
2: "errors",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes R400 from json.
|
|
|
|
func (s *R400) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode R400 to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "code":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.Code = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"code\"")
|
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Status = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
|
|
|
case "errors":
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.RawAppend(nil)
|
|
|
|
s.Errors = jx.Raw(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"errors\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode R400")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfR400) {
|
|
|
|
name = jsonFieldsNameOfR400[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
|
|
|
}
|
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *R400) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *R400) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *R404) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *R404) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("code")
|
|
|
|
e.Int(s.Code)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("status")
|
|
|
|
e.Str(s.Status)
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
if len(s.Errors) != 0 {
|
|
|
|
e.FieldStart("errors")
|
|
|
|
e.Raw(s.Errors)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfR404 = [3]string{
|
|
|
|
0: "code",
|
|
|
|
1: "status",
|
|
|
|
2: "errors",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes R404 from json.
|
|
|
|
func (s *R404) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode R404 to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "code":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.Code = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"code\"")
|
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Status = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
|
|
|
case "errors":
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.RawAppend(nil)
|
|
|
|
s.Errors = jx.Raw(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"errors\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode R404")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfR404) {
|
|
|
|
name = jsonFieldsNameOfR404[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
|
|
|
}
|
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *R404) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *R404) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *R409) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *R409) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
e.FieldStart("code")
|
|
|
|
e.Int(s.Code)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
e.FieldStart("status")
|
|
|
|
e.Str(s.Status)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
if len(s.Errors) != 0 {
|
|
|
|
e.FieldStart("errors")
|
|
|
|
e.Raw(s.Errors)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfR409 = [3]string{
|
|
|
|
0: "code",
|
|
|
|
1: "status",
|
|
|
|
2: "errors",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes R409 from json.
|
|
|
|
func (s *R409) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode R409 to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "code":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.Code = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"code\"")
|
|
|
|
}
|
|
|
|
case "status":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
|
|
|
s.Status = string(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
|
|
|
}
|
|
|
|
case "errors":
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.RawAppend(nil)
|
|
|
|
s.Errors = jx.Raw(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"errors\"")
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode R409")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfR409) {
|
|
|
|
name = jsonFieldsNameOfR409[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
|
|
|
}
|
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *R409) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *R409) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *R500) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *R500) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
e.FieldStart("code")
|
|
|
|
e.Int(s.Code)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
e.FieldStart("status")
|
|
|
|
e.Str(s.Status)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
if len(s.Errors) != 0 {
|
|
|
|
e.FieldStart("errors")
|
|
|
|
e.Raw(s.Errors)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
var jsonFieldsNameOfR500 = [3]string{
|
|
|
|
0: "code",
|
|
|
|
1: "status",
|
|
|
|
2: "errors",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes R500 from json.
|
|
|
|
func (s *R500) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode R500 to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
var requiredBitSet [1]uint8
|
2022-08-31 06:18:14 +00:00
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2022-08-31 07:49:08 +00:00
|
|
|
case "code":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Code = int(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"code\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "status":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Status = string(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "errors":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.RawAppend(nil)
|
|
|
|
s.Errors = jx.Raw(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"errors\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode R500")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfR500) {
|
|
|
|
name = jsonFieldsNameOfR500[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *R500) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *R500) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *UpdateCardReq) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UpdateCardReq) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
if s.Owner.Set {
|
|
|
|
e.FieldStart("owner")
|
|
|
|
s.Owner.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfUpdateCardReq = [1]string{
|
|
|
|
0: "owner",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UpdateCardReq from json.
|
|
|
|
func (s *UpdateCardReq) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode UpdateCardReq to nil")
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "owner":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Owner.Reset()
|
|
|
|
if err := s.Owner.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"owner\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode UpdateCardReq")
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UpdateCardReq) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UpdateCardReq) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *UpdateGroupReq) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UpdateGroupReq) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
if s.Name.Set {
|
|
|
|
e.FieldStart("name")
|
|
|
|
s.Name.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Users != nil {
|
|
|
|
e.FieldStart("users")
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range s.Users {
|
|
|
|
e.Int(elem)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfUpdateGroupReq = [2]string{
|
|
|
|
0: "name",
|
|
|
|
1: "users",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UpdateGroupReq from json.
|
|
|
|
func (s *UpdateGroupReq) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode UpdateGroupReq to nil")
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "name":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Name.Reset()
|
|
|
|
if err := s.Name.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"name\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "users":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Users = make([]int, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem int
|
|
|
|
v, err := d.Int()
|
|
|
|
elem = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
s.Users = append(s.Users, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"users\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode UpdateGroupReq")
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UpdateGroupReq) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UpdateGroupReq) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *UpdateUserReq) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UpdateUserReq) encodeFields(e *jx.Encoder) {
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-04-18 12:18:38 +00:00
|
|
|
{
|
|
|
|
if s.Token.Set {
|
|
|
|
e.FieldStart("token")
|
|
|
|
s.Token.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Card != nil {
|
|
|
|
e.FieldStart("card")
|
|
|
|
e.ArrStart()
|
|
|
|
for _, elem := range s.Card {
|
|
|
|
e.Int(elem)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
e.ArrEnd()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfUpdateUserReq = [6]string{
|
|
|
|
0: "did",
|
|
|
|
1: "delete",
|
|
|
|
2: "token",
|
|
|
|
3: "updated_at",
|
|
|
|
4: "next",
|
|
|
|
5: "card",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UpdateUserReq from json.
|
|
|
|
func (s *UpdateUserReq) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode UpdateUserReq to nil")
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
2023-05-01 14:00:17 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2023-04-18 12:18:38 +00:00
|
|
|
case "token":
|
|
|
|
if err := func() error {
|
|
|
|
s.Token.Reset()
|
|
|
|
if err := s.Token.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"token\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "updated_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "next":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "card":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Card = make([]int, 0)
|
|
|
|
if err := d.Arr(func(d *jx.Decoder) error {
|
|
|
|
var elem int
|
|
|
|
v, err := d.Int()
|
|
|
|
elem = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
s.Card = append(s.Card, elem)
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode UpdateUserReq")
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UpdateUserReq) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UpdateUserReq) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *UserCardList) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UserCardList) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Card.Set {
|
|
|
|
e.FieldStart("card")
|
|
|
|
s.Card.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Status.Set {
|
|
|
|
e.FieldStart("status")
|
|
|
|
s.Status.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Cp.Set {
|
|
|
|
e.FieldStart("cp")
|
|
|
|
s.Cp.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.URL.Set {
|
|
|
|
e.FieldStart("url")
|
|
|
|
s.URL.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var jsonFieldsNameOfUserCardList = [6]string{
|
|
|
|
0: "id",
|
|
|
|
1: "card",
|
|
|
|
2: "status",
|
|
|
|
3: "cp",
|
|
|
|
4: "url",
|
|
|
|
5: "created_at",
|
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UserCardList from json.
|
|
|
|
func (s *UserCardList) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode UserCardList to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "card":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Card.Reset()
|
|
|
|
if err := s.Card.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"card\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "status":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Status.Reset()
|
|
|
|
if err := s.Status.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"status\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "cp":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Cp.Reset()
|
|
|
|
if err := s.Cp.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"cp\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
case "url":
|
|
|
|
if err := func() error {
|
|
|
|
s.URL.Reset()
|
|
|
|
if err := s.URL.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"url\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode UserCardList")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
2022-08-31 07:49:08 +00:00
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000001,
|
2022-08-31 06:18:14 +00:00
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfUserCardList) {
|
|
|
|
name = jsonFieldsNameOfUserCardList[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UserCardList) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UserCardList) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *UserCreate) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UserCreate) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfUserCreate = [7]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "id",
|
|
|
|
1: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
2: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
3: "delete",
|
|
|
|
4: "created_at",
|
|
|
|
5: "updated_at",
|
|
|
|
6: "next",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UserCreate from json.
|
|
|
|
func (s *UserCreate) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode UserCreate to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
var requiredBitSet [1]uint8
|
2022-08-31 06:18:14 +00:00
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "username":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Username = string(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "updated_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "next":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode UserCreate")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfUserCreate) {
|
|
|
|
name = jsonFieldsNameOfUserCreate[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UserCreate) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UserCreate) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *UserList) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UserList) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfUserList = [7]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "id",
|
|
|
|
1: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
2: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
3: "delete",
|
|
|
|
4: "created_at",
|
|
|
|
5: "updated_at",
|
|
|
|
6: "next",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UserList from json.
|
|
|
|
func (s *UserList) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode UserList to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "username":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Str()
|
|
|
|
s.Username = string(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
case "updated_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "next":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode UserList")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
2022-08-31 07:49:08 +00:00
|
|
|
for i, mask := range [1]uint8{
|
2022-08-31 06:18:14 +00:00
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfUserList) {
|
|
|
|
name = jsonFieldsNameOfUserList[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UserList) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UserList) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
2022-08-31 06:18:14 +00:00
|
|
|
// Encode implements json.Marshaler.
|
2022-08-31 07:49:08 +00:00
|
|
|
func (s *UserRead) Encode(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UserRead) encodeFields(e *jx.Encoder) {
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
2022-08-31 07:49:08 +00:00
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
2022-08-31 07:49:08 +00:00
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfUserRead = [7]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "id",
|
|
|
|
1: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
2: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
3: "delete",
|
|
|
|
4: "created_at",
|
|
|
|
5: "updated_at",
|
|
|
|
6: "next",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UserRead from json.
|
|
|
|
func (s *UserRead) Decode(d *jx.Decoder) error {
|
2022-08-31 06:18:14 +00:00
|
|
|
if s == nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.New("invalid: unable to decode UserRead to nil")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
var requiredBitSet [1]uint8
|
2022-08-31 06:18:14 +00:00
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "username":
|
2022-08-31 06:18:14 +00:00
|
|
|
requiredBitSet[0] |= 1 << 1
|
|
|
|
if err := func() error {
|
|
|
|
v, err := d.Str()
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Username = string(v)
|
2022-08-31 06:18:14 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "created_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "updated_at":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "next":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
|
|
|
return errors.Wrap(err, "decode UserRead")
|
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
|
|
|
for i, mask := range [1]uint8{
|
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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(jsonFieldsNameOfUserRead) {
|
|
|
|
name = jsonFieldsNameOfUserRead[fieldIdx]
|
|
|
|
} else {
|
|
|
|
name = strconv.Itoa(fieldIdx)
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
failures = append(failures, validate.FieldError{
|
|
|
|
Name: name,
|
|
|
|
Error: validate.ErrFieldRequired,
|
|
|
|
})
|
|
|
|
// Reset bit.
|
|
|
|
result &^= 1 << bitIdx
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if len(failures) > 0 {
|
|
|
|
return &validate.Error{Fields: failures}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UserRead) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UserRead) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Encode implements json.Marshaler.
|
|
|
|
func (s *UserUpdate) Encode(e *jx.Encoder) {
|
|
|
|
e.ObjStart()
|
|
|
|
s.encodeFields(e)
|
|
|
|
e.ObjEnd()
|
|
|
|
}
|
|
|
|
|
|
|
|
// encodeFields encodes fields.
|
|
|
|
func (s *UserUpdate) encodeFields(e *jx.Encoder) {
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("id")
|
|
|
|
e.Int(s.ID)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
|
|
|
|
e.FieldStart("username")
|
|
|
|
e.Str(s.Username)
|
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
{
|
|
|
|
if s.Did.Set {
|
|
|
|
e.FieldStart("did")
|
|
|
|
s.Did.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
{
|
|
|
|
if s.Delete.Set {
|
|
|
|
e.FieldStart("delete")
|
|
|
|
s.Delete.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
{
|
|
|
|
if s.CreatedAt.Set {
|
|
|
|
e.FieldStart("created_at")
|
|
|
|
s.CreatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.UpdatedAt.Set {
|
|
|
|
e.FieldStart("updated_at")
|
|
|
|
s.UpdatedAt.Encode(e, json.EncodeDateTime)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
{
|
|
|
|
if s.Next.Set {
|
|
|
|
e.FieldStart("next")
|
|
|
|
s.Next.Encode(e)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-01 14:00:17 +00:00
|
|
|
var jsonFieldsNameOfUserUpdate = [7]string{
|
2022-08-31 07:49:08 +00:00
|
|
|
0: "id",
|
|
|
|
1: "username",
|
2023-04-13 07:50:11 +00:00
|
|
|
2: "did",
|
2023-05-01 14:00:17 +00:00
|
|
|
3: "delete",
|
|
|
|
4: "created_at",
|
|
|
|
5: "updated_at",
|
|
|
|
6: "next",
|
2022-08-31 07:49:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Decode decodes UserUpdate from json.
|
|
|
|
func (s *UserUpdate) Decode(d *jx.Decoder) error {
|
|
|
|
if s == nil {
|
|
|
|
return errors.New("invalid: unable to decode UserUpdate to nil")
|
|
|
|
}
|
|
|
|
var requiredBitSet [1]uint8
|
|
|
|
|
|
|
|
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
|
|
|
|
switch string(k) {
|
|
|
|
case "id":
|
|
|
|
requiredBitSet[0] |= 1 << 0
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Int()
|
|
|
|
s.ID = int(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"id\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "username":
|
|
|
|
requiredBitSet[0] |= 1 << 1
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
v, err := d.Str()
|
|
|
|
s.Username = string(v)
|
|
|
|
if err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"username\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
2023-04-13 07:50:11 +00:00
|
|
|
case "did":
|
|
|
|
if err := func() error {
|
|
|
|
s.Did.Reset()
|
|
|
|
if err := s.Did.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"did\"")
|
|
|
|
}
|
2023-05-01 14:00:17 +00:00
|
|
|
case "delete":
|
|
|
|
if err := func() error {
|
|
|
|
s.Delete.Reset()
|
|
|
|
if err := s.Delete.Decode(d); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"delete\"")
|
|
|
|
}
|
2022-08-31 06:18:14 +00:00
|
|
|
case "created_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.CreatedAt.Reset()
|
|
|
|
if err := s.CreatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"created_at\"")
|
|
|
|
}
|
|
|
|
case "updated_at":
|
|
|
|
if err := func() error {
|
|
|
|
s.UpdatedAt.Reset()
|
|
|
|
if err := s.UpdatedAt.Decode(d, json.DecodeDateTime); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
|
|
|
return errors.Wrap(err, "decode field \"updated_at\"")
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
case "next":
|
2022-08-31 06:18:14 +00:00
|
|
|
if err := func() error {
|
2022-08-31 07:49:08 +00:00
|
|
|
s.Next.Reset()
|
|
|
|
if err := s.Next.Decode(d); err != nil {
|
2022-08-31 06:18:14 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}(); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode field \"next\"")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
default:
|
|
|
|
return d.Skip()
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}); err != nil {
|
2022-08-31 07:49:08 +00:00
|
|
|
return errors.Wrap(err, "decode UserUpdate")
|
2022-08-31 06:18:14 +00:00
|
|
|
}
|
|
|
|
// Validate required fields.
|
|
|
|
var failures []validate.FieldError
|
2022-08-31 07:49:08 +00:00
|
|
|
for i, mask := range [1]uint8{
|
2022-08-31 06:18:14 +00:00
|
|
|
0b00000011,
|
|
|
|
} {
|
|
|
|
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
|
2022-08-31 07:49:08 +00:00
|
|
|
if fieldIdx < len(jsonFieldsNameOfUserUpdate) {
|
|
|
|
name = jsonFieldsNameOfUserUpdate[fieldIdx]
|
2022-08-31 06:18:14 +00:00
|
|
|
} 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
|
|
|
|
}
|
2022-08-31 07:49:08 +00:00
|
|
|
|
|
|
|
// MarshalJSON implements stdjson.Marshaler.
|
|
|
|
func (s *UserUpdate) MarshalJSON() ([]byte, error) {
|
|
|
|
e := jx.Encoder{}
|
|
|
|
s.Encode(&e)
|
|
|
|
return e.Bytes(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// UnmarshalJSON implements stdjson.Unmarshaler.
|
|
|
|
func (s *UserUpdate) UnmarshalJSON(data []byte) error {
|
|
|
|
d := jx.DecodeBytes(data)
|
|
|
|
return s.Decode(d)
|
|
|
|
}
|