openapi: generate

This commit is contained in:
Quaternions 2025-04-06 14:44:06 -07:00
parent e28c7e8149
commit 9b5f7e0b0c
Signed by: Quaternions
GPG Key ID: D0DF5964F79AC131
9 changed files with 450 additions and 88 deletions

@ -214,7 +214,7 @@ type Invoker interface {
// Get list of mapfixes.
//
// GET /mapfixes
ListMapfixes(ctx context.Context, params ListMapfixesParams) ([]Mapfix, error)
ListMapfixes(ctx context.Context, params ListMapfixesParams) (*Mapfixes, error)
// ListMaps invokes listMaps operation.
//
// Get list of maps.
@ -238,7 +238,7 @@ type Invoker interface {
// Get list of submissions.
//
// GET /submissions
ListSubmissions(ctx context.Context, params ListSubmissionsParams) ([]Submission, error)
ListSubmissions(ctx context.Context, params ListSubmissionsParams) (*Submissions, error)
// ReleaseSubmissions invokes releaseSubmissions operation.
//
// Release a set of uploaded maps.
@ -3838,12 +3838,12 @@ func (c *Client) sendGetSubmission(ctx context.Context, params GetSubmissionPara
// Get list of mapfixes.
//
// GET /mapfixes
func (c *Client) ListMapfixes(ctx context.Context, params ListMapfixesParams) ([]Mapfix, error) {
func (c *Client) ListMapfixes(ctx context.Context, params ListMapfixesParams) (*Mapfixes, error) {
res, err := c.sendListMapfixes(ctx, params)
return res, err
}
func (c *Client) sendListMapfixes(ctx context.Context, params ListMapfixesParams) (res []Mapfix, err error) {
func (c *Client) sendListMapfixes(ctx context.Context, params ListMapfixesParams) (res *Mapfixes, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listMapfixes"),
semconv.HTTPRequestMethodKey.String("GET"),
@ -4526,12 +4526,12 @@ func (c *Client) sendListScripts(ctx context.Context, params ListScriptsParams)
// Get list of submissions.
//
// GET /submissions
func (c *Client) ListSubmissions(ctx context.Context, params ListSubmissionsParams) ([]Submission, error) {
func (c *Client) ListSubmissions(ctx context.Context, params ListSubmissionsParams) (*Submissions, error) {
res, err := c.sendListSubmissions(ctx, params)
return res, err
}
func (c *Client) sendListSubmissions(ctx context.Context, params ListSubmissionsParams) (res []Submission, err error) {
func (c *Client) sendListSubmissions(ctx context.Context, params ListSubmissionsParams) (res *Submissions, err error) {
otelAttrs := []attribute.KeyValue{
otelogen.OperationID("listSubmissions"),
semconv.HTTPRequestMethodKey.String("GET"),

@ -5735,7 +5735,7 @@ func (s *Server) handleListMapfixesRequest(args [0]string, argsEscaped bool, w h
return
}
var response []Mapfix
var response *Mapfixes
if m := s.cfg.Middleware; m != nil {
mreq := middleware.Request{
Context: ctx,
@ -5775,7 +5775,7 @@ func (s *Server) handleListMapfixesRequest(args [0]string, argsEscaped bool, w h
type (
Request = struct{}
Params = ListMapfixesParams
Response = []Mapfix
Response = *Mapfixes
)
response, err = middleware.HookMiddleware[
Request,
@ -6411,7 +6411,7 @@ func (s *Server) handleListSubmissionsRequest(args [0]string, argsEscaped bool,
return
}
var response []Submission
var response *Submissions
if m := s.cfg.Middleware; m != nil {
mreq := middleware.Request{
Context: ctx,
@ -6451,7 +6451,7 @@ func (s *Server) handleListSubmissionsRequest(args [0]string, argsEscaped bool,
type (
Request = struct{}
Params = ListSubmissionsParams
Response = []Submission
Response = *Submissions
)
response, err = middleware.HookMiddleware[
Request,

@ -704,6 +704,129 @@ func (s *MapfixTriggerCreate) UnmarshalJSON(data []byte) error {
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *Mapfixes) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *Mapfixes) encodeFields(e *jx.Encoder) {
{
e.FieldStart("Total")
e.Int64(s.Total)
}
{
e.FieldStart("Mapfixes")
e.ArrStart()
for _, elem := range s.Mapfixes {
elem.Encode(e)
}
e.ArrEnd()
}
}
var jsonFieldsNameOfMapfixes = [2]string{
0: "Total",
1: "Mapfixes",
}
// Decode decodes Mapfixes from json.
func (s *Mapfixes) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode Mapfixes to nil")
}
var requiredBitSet [1]uint8
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
switch string(k) {
case "Total":
requiredBitSet[0] |= 1 << 0
if err := func() error {
v, err := d.Int64()
s.Total = int64(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"Total\"")
}
case "Mapfixes":
requiredBitSet[0] |= 1 << 1
if err := func() error {
s.Mapfixes = make([]Mapfix, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem Mapfix
if err := elem.Decode(d); err != nil {
return err
}
s.Mapfixes = append(s.Mapfixes, elem)
return nil
}); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"Mapfixes\"")
}
default:
return d.Skip()
}
return nil
}); err != nil {
return errors.Wrap(err, "decode Mapfixes")
}
// 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(jsonFieldsNameOfMapfixes) {
name = jsonFieldsNameOfMapfixes[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 *Mapfixes) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *Mapfixes) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *Operation) Encode(e *jx.Encoder) {
e.ObjStart()
@ -2834,6 +2957,129 @@ func (s *SubmissionTriggerCreate) UnmarshalJSON(data []byte) error {
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *Submissions) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *Submissions) encodeFields(e *jx.Encoder) {
{
e.FieldStart("Total")
e.Int64(s.Total)
}
{
e.FieldStart("Submissions")
e.ArrStart()
for _, elem := range s.Submissions {
elem.Encode(e)
}
e.ArrEnd()
}
}
var jsonFieldsNameOfSubmissions = [2]string{
0: "Total",
1: "Submissions",
}
// Decode decodes Submissions from json.
func (s *Submissions) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode Submissions to nil")
}
var requiredBitSet [1]uint8
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
switch string(k) {
case "Total":
requiredBitSet[0] |= 1 << 0
if err := func() error {
v, err := d.Int64()
s.Total = int64(v)
if err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"Total\"")
}
case "Submissions":
requiredBitSet[0] |= 1 << 1
if err := func() error {
s.Submissions = make([]Submission, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem Submission
if err := elem.Decode(d); err != nil {
return err
}
s.Submissions = append(s.Submissions, elem)
return nil
}); err != nil {
return err
}
return nil
}(); err != nil {
return errors.Wrap(err, "decode field \"Submissions\"")
}
default:
return d.Skip()
}
return nil
}); err != nil {
return errors.Wrap(err, "decode Submissions")
}
// 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(jsonFieldsNameOfSubmissions) {
name = jsonFieldsNameOfSubmissions[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 *Submissions) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *Submissions) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *User) Encode(e *jx.Encoder) {
e.ObjStart()

@ -2225,7 +2225,7 @@ func decodeGetSubmissionResponse(resp *http.Response) (res *Submission, _ error)
return res, errors.Wrap(defRes, "error")
}
func decodeListMapfixesResponse(resp *http.Response) (res []Mapfix, _ error) {
func decodeListMapfixesResponse(resp *http.Response) (res *Mapfixes, _ error) {
switch resp.StatusCode {
case 200:
// Code 200.
@ -2241,17 +2241,9 @@ func decodeListMapfixesResponse(resp *http.Response) (res []Mapfix, _ error) {
}
d := jx.DecodeBytes(buf)
var response []Mapfix
var response Mapfixes
if err := func() error {
response = make([]Mapfix, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem Mapfix
if err := elem.Decode(d); err != nil {
return err
}
response = append(response, elem)
return nil
}); err != nil {
if err := response.Decode(d); err != nil {
return err
}
if err := d.Skip(); err != io.EOF {
@ -2268,31 +2260,14 @@ func decodeListMapfixesResponse(resp *http.Response) (res []Mapfix, _ error) {
}
// Validate response.
if err := func() error {
if response == nil {
return errors.New("nil is invalid value")
}
var failures []validate.FieldError
for i, elem := range response {
if err := func() error {
if err := elem.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: fmt.Sprintf("[%d]", i),
Error: err,
})
}
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
if err := response.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
return res, errors.Wrap(err, "validate")
}
return response, nil
return &response, nil
default:
return res, validate.InvalidContentType(ct)
}
@ -2729,7 +2704,7 @@ func decodeListScriptsResponse(resp *http.Response) (res []Script, _ error) {
return res, errors.Wrap(defRes, "error")
}
func decodeListSubmissionsResponse(resp *http.Response) (res []Submission, _ error) {
func decodeListSubmissionsResponse(resp *http.Response) (res *Submissions, _ error) {
switch resp.StatusCode {
case 200:
// Code 200.
@ -2745,17 +2720,9 @@ func decodeListSubmissionsResponse(resp *http.Response) (res []Submission, _ err
}
d := jx.DecodeBytes(buf)
var response []Submission
var response Submissions
if err := func() error {
response = make([]Submission, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem Submission
if err := elem.Decode(d); err != nil {
return err
}
response = append(response, elem)
return nil
}); err != nil {
if err := response.Decode(d); err != nil {
return err
}
if err := d.Skip(); err != io.EOF {
@ -2772,31 +2739,14 @@ func decodeListSubmissionsResponse(resp *http.Response) (res []Submission, _ err
}
// Validate response.
if err := func() error {
if response == nil {
return errors.New("nil is invalid value")
}
var failures []validate.FieldError
for i, elem := range response {
if err := func() error {
if err := elem.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: fmt.Sprintf("[%d]", i),
Error: err,
})
}
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
if err := response.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
return res, errors.Wrap(err, "validate")
}
return response, nil
return &response, nil
default:
return res, validate.InvalidContentType(ct)
}

@ -293,17 +293,13 @@ func encodeGetSubmissionResponse(response *Submission, w http.ResponseWriter, sp
return nil
}
func encodeListMapfixesResponse(response []Mapfix, w http.ResponseWriter, span trace.Span) error {
func encodeListMapfixesResponse(response *Mapfixes, w http.ResponseWriter, span trace.Span) error {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(200)
span.SetStatus(codes.Ok, http.StatusText(200))
e := new(jx.Encoder)
e.ArrStart()
for _, elem := range response {
elem.Encode(e)
}
e.ArrEnd()
response.Encode(e)
if _, err := e.WriteTo(w); err != nil {
return errors.Wrap(err, "write")
}
@ -365,17 +361,13 @@ func encodeListScriptsResponse(response []Script, w http.ResponseWriter, span tr
return nil
}
func encodeListSubmissionsResponse(response []Submission, w http.ResponseWriter, span trace.Span) error {
func encodeListSubmissionsResponse(response *Submissions, w http.ResponseWriter, span trace.Span) error {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
w.WriteHeader(200)
span.SetStatus(codes.Ok, http.StatusText(200))
e := new(jx.Encoder)
e.ArrStart()
for _, elem := range response {
elem.Encode(e)
}
e.ArrEnd()
response.Encode(e)
if _, err := e.WriteTo(w); err != nil {
return errors.Wrap(err, "write")
}

@ -370,6 +370,32 @@ func (s *MapfixTriggerCreate) SetTargetAssetID(val int64) {
s.TargetAssetID = val
}
// Ref: #/components/schemas/Mapfixes
type Mapfixes struct {
Total int64 `json:"Total"`
Mapfixes []Mapfix `json:"Mapfixes"`
}
// GetTotal returns the value of Total.
func (s *Mapfixes) GetTotal() int64 {
return s.Total
}
// GetMapfixes returns the value of Mapfixes.
func (s *Mapfixes) GetMapfixes() []Mapfix {
return s.Mapfixes
}
// SetTotal sets the value of Total.
func (s *Mapfixes) SetTotal(val int64) {
s.Total = val
}
// SetMapfixes sets the value of Mapfixes.
func (s *Mapfixes) SetMapfixes(val []Mapfix) {
s.Mapfixes = val
}
// Ref: #/components/schemas/Operation
type Operation struct {
OperationID int32 `json:"OperationID"`
@ -1167,6 +1193,32 @@ func (s *SubmissionTriggerCreate) SetAssetID(val int64) {
s.AssetID = val
}
// Ref: #/components/schemas/Submissions
type Submissions struct {
Total int64 `json:"Total"`
Submissions []Submission `json:"Submissions"`
}
// GetTotal returns the value of Total.
func (s *Submissions) GetTotal() int64 {
return s.Total
}
// GetSubmissions returns the value of Submissions.
func (s *Submissions) GetSubmissions() []Submission {
return s.Submissions
}
// SetTotal sets the value of Total.
func (s *Submissions) SetTotal(val int64) {
s.Total = val
}
// SetSubmissions sets the value of Submissions.
func (s *Submissions) SetSubmissions(val []Submission) {
s.Submissions = val
}
// UpdateMapfixModelNoContent is response for UpdateMapfixModel operation.
type UpdateMapfixModelNoContent struct{}

@ -193,7 +193,7 @@ type Handler interface {
// Get list of mapfixes.
//
// GET /mapfixes
ListMapfixes(ctx context.Context, params ListMapfixesParams) ([]Mapfix, error)
ListMapfixes(ctx context.Context, params ListMapfixesParams) (*Mapfixes, error)
// ListMaps implements listMaps operation.
//
// Get list of maps.
@ -217,7 +217,7 @@ type Handler interface {
// Get list of submissions.
//
// GET /submissions
ListSubmissions(ctx context.Context, params ListSubmissionsParams) ([]Submission, error)
ListSubmissions(ctx context.Context, params ListSubmissionsParams) (*Submissions, error)
// ReleaseSubmissions implements releaseSubmissions operation.
//
// Release a set of uploaded maps.

@ -288,7 +288,7 @@ func (UnimplementedHandler) GetSubmission(ctx context.Context, params GetSubmiss
// Get list of mapfixes.
//
// GET /mapfixes
func (UnimplementedHandler) ListMapfixes(ctx context.Context, params ListMapfixesParams) (r []Mapfix, _ error) {
func (UnimplementedHandler) ListMapfixes(ctx context.Context, params ListMapfixesParams) (r *Mapfixes, _ error) {
return r, ht.ErrNotImplemented
}
@ -324,7 +324,7 @@ func (UnimplementedHandler) ListScripts(ctx context.Context, params ListScriptsP
// Get list of submissions.
//
// GET /submissions
func (UnimplementedHandler) ListSubmissions(ctx context.Context, params ListSubmissionsParams) (r []Submission, _ error) {
func (UnimplementedHandler) ListSubmissions(ctx context.Context, params ListSubmissionsParams) (r *Submissions, _ error) {
return r, ht.ErrNotImplemented
}

@ -3,6 +3,8 @@
package api
import (
"fmt"
"github.com/go-faster/errors"
"github.com/ogen-go/ogen/validate"
@ -474,6 +476,66 @@ func (s *MapfixTriggerCreate) Validate() error {
return nil
}
func (s *Mapfixes) Validate() error {
if s == nil {
return validate.ErrNilPointer
}
var failures []validate.FieldError
if err := func() error {
if err := (validate.Int{
MinSet: true,
Min: 0,
MaxSet: false,
Max: 0,
MinExclusive: false,
MaxExclusive: false,
MultipleOfSet: false,
MultipleOf: 0,
}).Validate(int64(s.Total)); err != nil {
return errors.Wrap(err, "int")
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: "Total",
Error: err,
})
}
if err := func() error {
if s.Mapfixes == nil {
return errors.New("nil is invalid value")
}
var failures []validate.FieldError
for i, elem := range s.Mapfixes {
if err := func() error {
if err := elem.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: fmt.Sprintf("[%d]", i),
Error: err,
})
}
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: "Mapfixes",
Error: err,
})
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
}
return nil
}
func (s *Operation) Validate() error {
if s == nil {
return validate.ErrNilPointer
@ -1746,6 +1808,66 @@ func (s *SubmissionTriggerCreate) Validate() error {
return nil
}
func (s *Submissions) Validate() error {
if s == nil {
return validate.ErrNilPointer
}
var failures []validate.FieldError
if err := func() error {
if err := (validate.Int{
MinSet: true,
Min: 0,
MaxSet: false,
Max: 0,
MinExclusive: false,
MaxExclusive: false,
MultipleOfSet: false,
MultipleOf: 0,
}).Validate(int64(s.Total)); err != nil {
return errors.Wrap(err, "int")
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: "Total",
Error: err,
})
}
if err := func() error {
if s.Submissions == nil {
return errors.New("nil is invalid value")
}
var failures []validate.FieldError
for i, elem := range s.Submissions {
if err := func() error {
if err := elem.Validate(); err != nil {
return err
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: fmt.Sprintf("[%d]", i),
Error: err,
})
}
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
}
return nil
}(); err != nil {
failures = append(failures, validate.FieldError{
Name: "Submissions",
Error: err,
})
}
if len(failures) > 0 {
return &validate.Error{Fields: failures}
}
return nil
}
func (s *User) Validate() error {
if s == nil {
return validate.ErrNilPointer