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 }