feat: implemented service/transport/main layers

This commit is contained in:
Anatoly Antonov 2025-06-21 22:06:32 +03:00
parent 5158c5d7c9
commit bcb9ace54c
29 changed files with 804 additions and 393 deletions

View file

@ -232,18 +232,18 @@ func (s *OptFloat64) UnmarshalJSON(data []byte) error {
return s.Decode(d)
}
// Encode encodes Parameters as json.
func (o OptParameters) Encode(e *jx.Encoder) {
// Encode encodes PredictionParameters as json.
func (o OptPredictionParameters) Encode(e *jx.Encoder) {
if !o.Set {
return
}
o.Value.Encode(e)
}
// Decode decodes Parameters from json.
func (o *OptParameters) Decode(d *jx.Decoder) error {
// Decode decodes PredictionParameters from json.
func (o *OptPredictionParameters) Decode(d *jx.Decoder) error {
if o == nil {
return errors.New("invalid: unable to decode OptParameters to nil")
return errors.New("invalid: unable to decode OptPredictionParameters to nil")
}
o.Set = true
if err := o.Value.Decode(d); err != nil {
@ -253,30 +253,30 @@ func (o *OptParameters) Decode(d *jx.Decoder) error {
}
// MarshalJSON implements stdjson.Marshaler.
func (s OptParameters) MarshalJSON() ([]byte, error) {
func (s OptPredictionParameters) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *OptParameters) UnmarshalJSON(data []byte) error {
func (s *OptPredictionParameters) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes ParametersFormat as json.
func (o OptParametersFormat) Encode(e *jx.Encoder) {
// Encode encodes PredictionParametersFormat as json.
func (o OptPredictionParametersFormat) Encode(e *jx.Encoder) {
if !o.Set {
return
}
e.Str(string(o.Value))
}
// Decode decodes ParametersFormat from json.
func (o *OptParametersFormat) Decode(d *jx.Decoder) error {
// Decode decodes PredictionParametersFormat from json.
func (o *OptPredictionParametersFormat) Decode(d *jx.Decoder) error {
if o == nil {
return errors.New("invalid: unable to decode OptParametersFormat to nil")
return errors.New("invalid: unable to decode OptPredictionParametersFormat to nil")
}
o.Set = true
if err := o.Value.Decode(d); err != nil {
@ -286,30 +286,30 @@ func (o *OptParametersFormat) Decode(d *jx.Decoder) error {
}
// MarshalJSON implements stdjson.Marshaler.
func (s OptParametersFormat) MarshalJSON() ([]byte, error) {
func (s OptPredictionParametersFormat) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *OptParametersFormat) UnmarshalJSON(data []byte) error {
func (s *OptPredictionParametersFormat) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes ParametersProfile as json.
func (o OptParametersProfile) Encode(e *jx.Encoder) {
// Encode encodes PredictionParametersProfile as json.
func (o OptPredictionParametersProfile) Encode(e *jx.Encoder) {
if !o.Set {
return
}
e.Str(string(o.Value))
}
// Decode decodes ParametersProfile from json.
func (o *OptParametersProfile) Decode(d *jx.Decoder) error {
// Decode decodes PredictionParametersProfile from json.
func (o *OptPredictionParametersProfile) Decode(d *jx.Decoder) error {
if o == nil {
return errors.New("invalid: unable to decode OptParametersProfile to nil")
return errors.New("invalid: unable to decode OptPredictionParametersProfile to nil")
}
o.Set = true
if err := o.Value.Decode(d); err != nil {
@ -319,14 +319,14 @@ func (o *OptParametersProfile) Decode(d *jx.Decoder) error {
}
// MarshalJSON implements stdjson.Marshaler.
func (s OptParametersProfile) MarshalJSON() ([]byte, error) {
func (s OptPredictionParametersProfile) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *OptParametersProfile) UnmarshalJSON(data []byte) error {
func (s *OptPredictionParametersProfile) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
@ -367,14 +367,14 @@ func (s *OptString) UnmarshalJSON(data []byte) error {
}
// Encode implements json.Marshaler.
func (s *Parameters) Encode(e *jx.Encoder) {
func (s *PredictionParameters) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *Parameters) encodeFields(e *jx.Encoder) {
func (s *PredictionParameters) encodeFields(e *jx.Encoder) {
{
if s.LaunchLatitude.Set {
e.FieldStart("launch_latitude")
@ -467,7 +467,7 @@ func (s *Parameters) encodeFields(e *jx.Encoder) {
}
}
var jsonFieldsNameOfParameters = [15]string{
var jsonFieldsNameOfPredictionParameters = [15]string{
0: "launch_latitude",
1: "launch_longitude",
2: "launch_datetime",
@ -485,10 +485,10 @@ var jsonFieldsNameOfParameters = [15]string{
14: "dataset",
}
// Decode decodes Parameters from json.
func (s *Parameters) Decode(d *jx.Decoder) error {
// Decode decodes PredictionParameters from json.
func (s *PredictionParameters) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode Parameters to nil")
return errors.New("invalid: unable to decode PredictionParameters to nil")
}
s.setDefaults()
@ -649,116 +649,116 @@ func (s *Parameters) Decode(d *jx.Decoder) error {
}
return nil
}); err != nil {
return errors.Wrap(err, "decode Parameters")
return errors.Wrap(err, "decode PredictionParameters")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s *Parameters) MarshalJSON() ([]byte, error) {
func (s *PredictionParameters) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *Parameters) UnmarshalJSON(data []byte) error {
func (s *PredictionParameters) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes ParametersFormat as json.
func (s ParametersFormat) Encode(e *jx.Encoder) {
// Encode encodes PredictionParametersFormat as json.
func (s PredictionParametersFormat) Encode(e *jx.Encoder) {
e.Str(string(s))
}
// Decode decodes ParametersFormat from json.
func (s *ParametersFormat) Decode(d *jx.Decoder) error {
// Decode decodes PredictionParametersFormat from json.
func (s *PredictionParametersFormat) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode ParametersFormat to nil")
return errors.New("invalid: unable to decode PredictionParametersFormat to nil")
}
v, err := d.StrBytes()
if err != nil {
return err
}
// Try to use constant string.
switch ParametersFormat(v) {
case ParametersFormatJSON:
*s = ParametersFormatJSON
switch PredictionParametersFormat(v) {
case PredictionParametersFormatJSON:
*s = PredictionParametersFormatJSON
default:
*s = ParametersFormat(v)
*s = PredictionParametersFormat(v)
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s ParametersFormat) MarshalJSON() ([]byte, error) {
func (s PredictionParametersFormat) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *ParametersFormat) UnmarshalJSON(data []byte) error {
func (s *PredictionParametersFormat) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes ParametersProfile as json.
func (s ParametersProfile) Encode(e *jx.Encoder) {
// Encode encodes PredictionParametersProfile as json.
func (s PredictionParametersProfile) Encode(e *jx.Encoder) {
e.Str(string(s))
}
// Decode decodes ParametersProfile from json.
func (s *ParametersProfile) Decode(d *jx.Decoder) error {
// Decode decodes PredictionParametersProfile from json.
func (s *PredictionParametersProfile) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode ParametersProfile to nil")
return errors.New("invalid: unable to decode PredictionParametersProfile to nil")
}
v, err := d.StrBytes()
if err != nil {
return err
}
// Try to use constant string.
switch ParametersProfile(v) {
case ParametersProfileStandardProfile:
*s = ParametersProfileStandardProfile
case ParametersProfileFloatProfile:
*s = ParametersProfileFloatProfile
case ParametersProfileReverseProfile:
*s = ParametersProfileReverseProfile
case ParametersProfileCustomProfile:
*s = ParametersProfileCustomProfile
switch PredictionParametersProfile(v) {
case PredictionParametersProfileStandardProfile:
*s = PredictionParametersProfileStandardProfile
case PredictionParametersProfileFloatProfile:
*s = PredictionParametersProfileFloatProfile
case PredictionParametersProfileReverseProfile:
*s = PredictionParametersProfileReverseProfile
case PredictionParametersProfileCustomProfile:
*s = PredictionParametersProfileCustomProfile
default:
*s = ParametersProfile(v)
*s = PredictionParametersProfile(v)
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s ParametersProfile) MarshalJSON() ([]byte, error) {
func (s PredictionParametersProfile) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *ParametersProfile) UnmarshalJSON(data []byte) error {
func (s *PredictionParametersProfile) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *Result) Encode(e *jx.Encoder) {
func (s *PredictionResult) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *Result) encodeFields(e *jx.Encoder) {
func (s *PredictionResult) encodeFields(e *jx.Encoder) {
{
e.FieldStart("metadata")
s.Metadata.Encode(e)
@ -773,15 +773,15 @@ func (s *Result) encodeFields(e *jx.Encoder) {
}
}
var jsonFieldsNameOfResult = [2]string{
var jsonFieldsNameOfPredictionResult = [2]string{
0: "metadata",
1: "prediction",
}
// Decode decodes Result from json.
func (s *Result) Decode(d *jx.Decoder) error {
// Decode decodes PredictionResult from json.
func (s *PredictionResult) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode Result to nil")
return errors.New("invalid: unable to decode PredictionResult to nil")
}
var requiredBitSet [1]uint8
@ -800,9 +800,9 @@ func (s *Result) Decode(d *jx.Decoder) error {
case "prediction":
requiredBitSet[0] |= 1 << 1
if err := func() error {
s.Prediction = make([]ResultPredictionItem, 0)
s.Prediction = make([]PredictionResultPredictionItem, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem ResultPredictionItem
var elem PredictionResultPredictionItem
if err := elem.Decode(d); err != nil {
return err
}
@ -820,7 +820,7 @@ func (s *Result) Decode(d *jx.Decoder) error {
}
return nil
}); err != nil {
return errors.Wrap(err, "decode Result")
return errors.Wrap(err, "decode PredictionResult")
}
// Validate required fields.
var failures []validate.FieldError
@ -837,8 +837,8 @@ func (s *Result) Decode(d *jx.Decoder) error {
bitIdx := bits.TrailingZeros8(result)
fieldIdx := i*8 + bitIdx
var name string
if fieldIdx < len(jsonFieldsNameOfResult) {
name = jsonFieldsNameOfResult[fieldIdx]
if fieldIdx < len(jsonFieldsNameOfPredictionResult) {
name = jsonFieldsNameOfPredictionResult[fieldIdx]
} else {
name = strconv.Itoa(fieldIdx)
}
@ -859,27 +859,27 @@ func (s *Result) Decode(d *jx.Decoder) error {
}
// MarshalJSON implements stdjson.Marshaler.
func (s *Result) MarshalJSON() ([]byte, error) {
func (s *PredictionResult) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *Result) UnmarshalJSON(data []byte) error {
func (s *PredictionResult) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *ResultMetadata) Encode(e *jx.Encoder) {
func (s *PredictionResultMetadata) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *ResultMetadata) encodeFields(e *jx.Encoder) {
func (s *PredictionResultMetadata) encodeFields(e *jx.Encoder) {
{
e.FieldStart("complete_datetime")
json.EncodeDateTime(e, s.CompleteDatetime)
@ -890,15 +890,15 @@ func (s *ResultMetadata) encodeFields(e *jx.Encoder) {
}
}
var jsonFieldsNameOfResultMetadata = [2]string{
var jsonFieldsNameOfPredictionResultMetadata = [2]string{
0: "complete_datetime",
1: "start_datetime",
}
// Decode decodes ResultMetadata from json.
func (s *ResultMetadata) Decode(d *jx.Decoder) error {
// Decode decodes PredictionResultMetadata from json.
func (s *PredictionResultMetadata) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode ResultMetadata to nil")
return errors.New("invalid: unable to decode PredictionResultMetadata to nil")
}
var requiredBitSet [1]uint8
@ -933,7 +933,7 @@ func (s *ResultMetadata) Decode(d *jx.Decoder) error {
}
return nil
}); err != nil {
return errors.Wrap(err, "decode ResultMetadata")
return errors.Wrap(err, "decode PredictionResultMetadata")
}
// Validate required fields.
var failures []validate.FieldError
@ -950,8 +950,8 @@ func (s *ResultMetadata) Decode(d *jx.Decoder) error {
bitIdx := bits.TrailingZeros8(result)
fieldIdx := i*8 + bitIdx
var name string
if fieldIdx < len(jsonFieldsNameOfResultMetadata) {
name = jsonFieldsNameOfResultMetadata[fieldIdx]
if fieldIdx < len(jsonFieldsNameOfPredictionResultMetadata) {
name = jsonFieldsNameOfPredictionResultMetadata[fieldIdx]
} else {
name = strconv.Itoa(fieldIdx)
}
@ -972,27 +972,27 @@ func (s *ResultMetadata) Decode(d *jx.Decoder) error {
}
// MarshalJSON implements stdjson.Marshaler.
func (s *ResultMetadata) MarshalJSON() ([]byte, error) {
func (s *PredictionResultMetadata) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *ResultMetadata) UnmarshalJSON(data []byte) error {
func (s *PredictionResultMetadata) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *ResultPredictionItem) Encode(e *jx.Encoder) {
func (s *PredictionResultPredictionItem) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *ResultPredictionItem) encodeFields(e *jx.Encoder) {
func (s *PredictionResultPredictionItem) encodeFields(e *jx.Encoder) {
{
e.FieldStart("stage")
s.Stage.Encode(e)
@ -1007,15 +1007,15 @@ func (s *ResultPredictionItem) encodeFields(e *jx.Encoder) {
}
}
var jsonFieldsNameOfResultPredictionItem = [2]string{
var jsonFieldsNameOfPredictionResultPredictionItem = [2]string{
0: "stage",
1: "trajectory",
}
// Decode decodes ResultPredictionItem from json.
func (s *ResultPredictionItem) Decode(d *jx.Decoder) error {
// Decode decodes PredictionResultPredictionItem from json.
func (s *PredictionResultPredictionItem) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode ResultPredictionItem to nil")
return errors.New("invalid: unable to decode PredictionResultPredictionItem to nil")
}
var requiredBitSet [1]uint8
@ -1034,9 +1034,9 @@ func (s *ResultPredictionItem) Decode(d *jx.Decoder) error {
case "trajectory":
requiredBitSet[0] |= 1 << 1
if err := func() error {
s.Trajectory = make([]ResultPredictionItemTrajectoryItem, 0)
s.Trajectory = make([]PredictionResultPredictionItemTrajectoryItem, 0)
if err := d.Arr(func(d *jx.Decoder) error {
var elem ResultPredictionItemTrajectoryItem
var elem PredictionResultPredictionItemTrajectoryItem
if err := elem.Decode(d); err != nil {
return err
}
@ -1054,7 +1054,7 @@ func (s *ResultPredictionItem) Decode(d *jx.Decoder) error {
}
return nil
}); err != nil {
return errors.Wrap(err, "decode ResultPredictionItem")
return errors.Wrap(err, "decode PredictionResultPredictionItem")
}
// Validate required fields.
var failures []validate.FieldError
@ -1071,8 +1071,8 @@ func (s *ResultPredictionItem) Decode(d *jx.Decoder) error {
bitIdx := bits.TrailingZeros8(result)
fieldIdx := i*8 + bitIdx
var name string
if fieldIdx < len(jsonFieldsNameOfResultPredictionItem) {
name = jsonFieldsNameOfResultPredictionItem[fieldIdx]
if fieldIdx < len(jsonFieldsNameOfPredictionResultPredictionItem) {
name = jsonFieldsNameOfPredictionResultPredictionItem[fieldIdx]
} else {
name = strconv.Itoa(fieldIdx)
}
@ -1093,75 +1093,75 @@ func (s *ResultPredictionItem) Decode(d *jx.Decoder) error {
}
// MarshalJSON implements stdjson.Marshaler.
func (s *ResultPredictionItem) MarshalJSON() ([]byte, error) {
func (s *PredictionResultPredictionItem) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *ResultPredictionItem) UnmarshalJSON(data []byte) error {
func (s *PredictionResultPredictionItem) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode encodes ResultPredictionItemStage as json.
func (s ResultPredictionItemStage) Encode(e *jx.Encoder) {
// Encode encodes PredictionResultPredictionItemStage as json.
func (s PredictionResultPredictionItemStage) Encode(e *jx.Encoder) {
e.Str(string(s))
}
// Decode decodes ResultPredictionItemStage from json.
func (s *ResultPredictionItemStage) Decode(d *jx.Decoder) error {
// Decode decodes PredictionResultPredictionItemStage from json.
func (s *PredictionResultPredictionItemStage) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode ResultPredictionItemStage to nil")
return errors.New("invalid: unable to decode PredictionResultPredictionItemStage to nil")
}
v, err := d.StrBytes()
if err != nil {
return err
}
// Try to use constant string.
switch ResultPredictionItemStage(v) {
case ResultPredictionItemStageAscent:
*s = ResultPredictionItemStageAscent
case ResultPredictionItemStageDescent:
*s = ResultPredictionItemStageDescent
switch PredictionResultPredictionItemStage(v) {
case PredictionResultPredictionItemStageAscent:
*s = PredictionResultPredictionItemStageAscent
case PredictionResultPredictionItemStageDescent:
*s = PredictionResultPredictionItemStageDescent
default:
*s = ResultPredictionItemStage(v)
*s = PredictionResultPredictionItemStage(v)
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s ResultPredictionItemStage) MarshalJSON() ([]byte, error) {
func (s PredictionResultPredictionItemStage) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *ResultPredictionItemStage) UnmarshalJSON(data []byte) error {
func (s *PredictionResultPredictionItemStage) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}
// Encode implements json.Marshaler.
func (s *ResultPredictionItemTrajectoryItem) Encode(e *jx.Encoder) {
func (s *PredictionResultPredictionItemTrajectoryItem) Encode(e *jx.Encoder) {
e.ObjStart()
s.encodeFields(e)
e.ObjEnd()
}
// encodeFields encodes fields.
func (s *ResultPredictionItemTrajectoryItem) encodeFields(e *jx.Encoder) {
func (s *PredictionResultPredictionItemTrajectoryItem) encodeFields(e *jx.Encoder) {
}
var jsonFieldsNameOfResultPredictionItemTrajectoryItem = [0]string{}
var jsonFieldsNameOfPredictionResultPredictionItemTrajectoryItem = [0]string{}
// Decode decodes ResultPredictionItemTrajectoryItem from json.
func (s *ResultPredictionItemTrajectoryItem) Decode(d *jx.Decoder) error {
// Decode decodes PredictionResultPredictionItemTrajectoryItem from json.
func (s *PredictionResultPredictionItemTrajectoryItem) Decode(d *jx.Decoder) error {
if s == nil {
return errors.New("invalid: unable to decode ResultPredictionItemTrajectoryItem to nil")
return errors.New("invalid: unable to decode PredictionResultPredictionItemTrajectoryItem to nil")
}
if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error {
@ -1170,21 +1170,21 @@ func (s *ResultPredictionItemTrajectoryItem) Decode(d *jx.Decoder) error {
return d.Skip()
}
}); err != nil {
return errors.Wrap(err, "decode ResultPredictionItemTrajectoryItem")
return errors.Wrap(err, "decode PredictionResultPredictionItemTrajectoryItem")
}
return nil
}
// MarshalJSON implements stdjson.Marshaler.
func (s *ResultPredictionItemTrajectoryItem) MarshalJSON() ([]byte, error) {
func (s *PredictionResultPredictionItemTrajectoryItem) MarshalJSON() ([]byte, error) {
e := jx.Encoder{}
s.Encode(&e)
return e.Bytes(), nil
}
// UnmarshalJSON implements stdjson.Unmarshaler.
func (s *ResultPredictionItemTrajectoryItem) UnmarshalJSON(data []byte) error {
func (s *PredictionResultPredictionItemTrajectoryItem) UnmarshalJSON(data []byte) error {
d := jx.DecodeBytes(data)
return s.Decode(d)
}