github.com/voedger/voedger@v0.0.0-20240520144910-273e84102129/pkg/state/impl_response_storage.go (about)

     1  /*
     2   * Copyright (c) 2023-present unTill Pro, Ltd.
     3   */
     4  
     5  package state
     6  
     7  import (
     8  	"net/http"
     9  
    10  	"github.com/voedger/voedger/pkg/appdef"
    11  	"github.com/voedger/voedger/pkg/istructs"
    12  )
    13  
    14  type cmdResponseStorage struct {
    15  }
    16  
    17  type responseKeyBuilder struct {
    18  	*keyBuilder
    19  }
    20  
    21  func newResponseKeyBuilder() *responseKeyBuilder {
    22  	return &responseKeyBuilder{
    23  		&keyBuilder{
    24  			storage: Response,
    25  		},
    26  	}
    27  }
    28  func (*responseKeyBuilder) Equals(src istructs.IKeyBuilder) bool {
    29  	_, ok := src.(*responseKeyBuilder)
    30  	return ok
    31  }
    32  
    33  type responseValueBuilder struct {
    34  	*baseValueBuilder
    35  	statusCode   int32
    36  	errorMessage string
    37  }
    38  
    39  func (b *responseValueBuilder) PutInt32(name string, value int32) {
    40  	switch name {
    41  	case Field_StatusCode:
    42  		b.statusCode = value
    43  	default:
    44  		panic(errUndefined(name))
    45  	}
    46  }
    47  
    48  func (b *responseValueBuilder) PutString(name string, value string) {
    49  	switch name {
    50  	case Field_ErrorMessage:
    51  		b.errorMessage = value
    52  	default:
    53  		panic(errUndefined(name))
    54  	}
    55  }
    56  
    57  func (b *responseValueBuilder) BuildValue() istructs.IStateValue {
    58  	return &responsesValue{
    59  		baseStateValue: &baseStateValue{},
    60  		statusCode:     b.statusCode,
    61  		errorMessage:   b.errorMessage,
    62  	}
    63  }
    64  
    65  type responsesValue struct {
    66  	*baseStateValue
    67  	statusCode   int32
    68  	errorMessage string
    69  }
    70  
    71  func (v *responsesValue) AsInt32(name string) int32 {
    72  	switch name {
    73  	case Field_StatusCode:
    74  		return v.statusCode
    75  	default:
    76  		panic(errUndefined(name))
    77  	}
    78  }
    79  
    80  func (v *responsesValue) AsString(name string) string {
    81  	switch name {
    82  	case Field_ErrorMessage:
    83  		return v.errorMessage
    84  	default:
    85  		panic(errUndefined(name))
    86  	}
    87  }
    88  
    89  func (s *cmdResponseStorage) NewKeyBuilder(_ appdef.QName, _ istructs.IStateKeyBuilder) istructs.IStateKeyBuilder {
    90  	return newResponseKeyBuilder()
    91  }
    92  
    93  func (s *cmdResponseStorage) Validate([]ApplyBatchItem) (err error) {
    94  	panic("not applicable")
    95  }
    96  
    97  func (s *cmdResponseStorage) ApplyBatch([]ApplyBatchItem) (err error) {
    98  	panic("not applicable")
    99  }
   100  
   101  func (s *cmdResponseStorage) ProvideValueBuilder(istructs.IStateKeyBuilder, istructs.IStateValueBuilder) (istructs.IStateValueBuilder, error) {
   102  	return &responseValueBuilder{
   103  		&baseValueBuilder{},
   104  		http.StatusOK,
   105  		"",
   106  	}, nil
   107  }