diff --git a/go.mod b/go.mod index 807b69b7..850af7f8 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/IBAX-io/go-ibax -go 1.17 +go 1.18 require ( github.com/360EntSecGroup-Skylar/excelize v1.4.1 diff --git a/go.sum b/go.sum index bba3629d..c4c99135 100644 --- a/go.sum +++ b/go.sum @@ -110,7 +110,6 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/centrifugal/gocent v2.2.0+incompatible h1:49oQLm1CDojd8vgz2w5RrECgW3Ew+Z5muIQGIggI2Vk= github.com/centrifugal/gocent v2.2.0+incompatible/go.mod h1:gtbj3+fMApCIcaGmGvk2BinwEauUtGeu8YZPLcedOvQ= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -351,7 +350,6 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFb github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= @@ -407,7 +405,6 @@ github.com/ipfs/go-ipfs-api v0.3.0/go.mod h1:A1naQGm0Jg01GxDq7oDyVSZxt20SuRTNIBF github.com/ipfs/go-ipfs-files v0.0.9 h1:OFyOfmuVDu9c5YtjSDORmwXzE6fmZikzZpzsnNkgFEg= github.com/ipfs/go-ipfs-files v0.0.9/go.mod h1:aFv2uQ/qxWpL/6lidWvnSQmaVqCrf0TBGoUr+C1Fo84= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= -github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -429,7 +426,6 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= @@ -725,7 +721,6 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= -github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -964,7 +959,6 @@ golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f h1:hEYJvxw1lSnWIl8X9ofsYMklzaDs90JI2az5YMd4fPM= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1079,7 +1073,6 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1205,7 +1198,6 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1310,7 +1302,6 @@ google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/packages/api/api.go b/packages/api/api.go index 492e1c79..ac0f6173 100644 --- a/packages/api/api.go +++ b/packages/api/api.go @@ -48,7 +48,7 @@ func (c *Client) Prefix() string { return converter.Int64ToStr(c.EcosystemID) } -func jsonResponse(w http.ResponseWriter, v interface{}) { +func jsonResponse(w http.ResponseWriter, v any) { jsonResult, err := json.Marshal(v) if err != nil { log.WithFields(log.Fields{"type": consts.JSONMarshallError, "error": err}).Error("marhsalling http response to json") diff --git a/packages/api/api_test.go b/packages/api/api_test.go index 80a526e9..8aa4fb71 100644 --- a/packages/api/api_test.go +++ b/packages/api/api_test.go @@ -86,7 +86,7 @@ func sendRawRequest(rtype, url string, form *url.Values) ([]byte, error) { return data, nil } -func sendRequest(rtype, url string, form *url.Values, v interface{}) error { +func sendRequest(rtype, url string, form *url.Values, v any) error { data, err := sendRawRequest(rtype, url, form) if err != nil { return err @@ -95,11 +95,11 @@ func sendRequest(rtype, url string, form *url.Values, v interface{}) error { return json.Unmarshal(data, v) } -func sendGet(url string, form *url.Values, v interface{}) error { +func sendGet(url string, form *url.Values, v any) error { return sendRequest("GET", url, form, v) } -func sendPost(url string, form *url.Values, v interface{}) error { +func sendPost(url string, form *url.Values, v any) error { return sendRequest("POST", url, form, v) } @@ -317,7 +317,7 @@ type getter interface { Get(string) string } -type contractParams map[string]interface{} +type contractParams map[string]any func (cp *contractParams) Get(key string) string { if _, ok := (*cp)[key]; !ok { @@ -326,7 +326,7 @@ func (cp *contractParams) Get(key string) string { return fmt.Sprintf("%v", (*cp)[key]) } -func (cp *contractParams) GetRaw(key string) interface{} { +func (cp *contractParams) GetRaw(key string) any { return (*cp)[key] } @@ -336,7 +336,7 @@ func postTxResult(name string, form getter) (id int64, msg string, err error) { return } - params := make(map[string]interface{}) + params := make(map[string]any) for _, field := range contract.Fields { name := field.Name value := form.Get(name) @@ -353,11 +353,11 @@ func postTxResult(name string, form getter) (id int64, msg string, err error) { case "float": params[name], err = strconv.ParseFloat(value, 64) case "array": - var v interface{} + var v any err = json.Unmarshal([]byte(value), &v) params[name] = v case "map": - var v map[string]interface{} + var v map[string]any err = json.Unmarshal([]byte(value), &v) params[name] = v case "string", "money": @@ -428,7 +428,7 @@ func postTxResultMultipart(name string, form getter) (id int64, msg string, err return } - params := make(map[string]interface{}) + params := make(map[string]any) for _, field := range contract.Fields { name := field.Name value := form.Get(name) @@ -445,11 +445,11 @@ func postTxResultMultipart(name string, form getter) (id int64, msg string, err case "float": params[name], err = strconv.ParseFloat(value, 64) case "array": - var v interface{} + var v any err = json.Unmarshal([]byte(value), &v) params[name] = v case "map": - var v map[string]interface{} + var v map[string]any err = json.Unmarshal([]byte(value), &v) params[name] = v case "string", "money": @@ -536,7 +536,7 @@ func postSignTxResult(name string, form getter) (id int64, msg string, err error return } - params := make(map[string]interface{}) + params := make(map[string]any) for _, field := range contract.Fields { name := field.Name value := form.Get(name) @@ -553,11 +553,11 @@ func postSignTxResult(name string, form getter) (id int64, msg string, err error case "float": params[name], err = strconv.ParseFloat(value, 64) case "array": - var v interface{} + var v any err = json.Unmarshal([]byte(value), &v) params[name] = v case "map": - var v map[string]interface{} + var v map[string]any err = json.Unmarshal([]byte(value), &v) params[name] = v case "string", "money": @@ -626,7 +626,7 @@ func postTxResult2(name string, form getter) (id int64, msg string, err error) { return } - params := make(map[string]interface{}) + params := make(map[string]any) for _, field := range contract.Fields { name := field.Name value := form.Get(name) @@ -643,11 +643,11 @@ func postTxResult2(name string, form getter) (id int64, msg string, err error) { case "float": params[name], err = strconv.ParseFloat(value, 64) case "array": - var v interface{} + var v any err = json.Unmarshal([]byte(value), &v) params[name] = v case "map": - var v map[string]interface{} + var v map[string]any err = json.Unmarshal([]byte(value), &v) params[name] = v case "string", "money": @@ -761,7 +761,7 @@ func TestGetAvatar(t *testing.T) { assert.Equal(t, expectedMime, mime, "content type must be a '%s' but returns '%s'", expectedMime, mime) } -func sendMultipart(url string, files map[string][]byte, v interface{}) error { +func sendMultipart(url string, files map[string][]byte, v any) error { body := new(bytes.Buffer) writer := multipart.NewWriter(body) diff --git a/packages/api/auth.go b/packages/api/auth.go index 85a1722d..339dce4c 100644 --- a/packages/api/auth.go +++ b/packages/api/auth.go @@ -56,7 +56,7 @@ func parseJWTToken(header string) (*jwt.Token, error) { return nil, errJWTAuthValue } - return jwt.ParseWithClaims(header, &JWTClaims{}, func(token *jwt.Token) (interface{}, error) { + return jwt.ParseWithClaims(header, &JWTClaims{}, func(token *jwt.Token) (any, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) } diff --git a/packages/api/block.go b/packages/api/block.go index f3b3dff6..c6257ec0 100644 --- a/packages/api/block.go +++ b/packages/api/block.go @@ -85,10 +85,10 @@ func getBlockInfoHandler(w http.ResponseWriter, r *http.Request) { } type TxInfo struct { - Hash []byte `json:"hash"` - ContractName string `json:"contract_name"` - Params map[string]interface{} `json:"params"` - KeyID int64 `json:"key_id"` + Hash []byte `json:"hash"` + ContractName string `json:"contract_name"` + Params map[string]any `json:"params"` + KeyID int64 `json:"key_id"` } type blocksTxInfoForm struct { @@ -167,13 +167,13 @@ func getBlocksTxInfoHandler(w http.ResponseWriter, r *http.Request) { } type TxDetailedInfo struct { - Hash []byte `json:"hash"` - ContractName string `json:"contract_name"` - Params map[string]interface{} `json:"params"` - KeyID int64 `json:"key_id"` - Time int64 `json:"time"` - Type byte `json:"type"` - Size string `json:"size"` + Hash []byte `json:"hash"` + ContractName string `json:"contract_name"` + Params map[string]any `json:"params"` + KeyID int64 `json:"key_id"` + Time int64 `json:"time"` + Type byte `json:"type"` + Size string `json:"size"` } type BlockHeaderInfo struct { diff --git a/packages/api/context.go b/packages/api/context.go index e3e6c758..1b0ef5bf 100644 --- a/packages/api/context.go +++ b/packages/api/context.go @@ -21,11 +21,11 @@ const ( contextKeyClient ) -func setContext(r *http.Request, key, value interface{}) *http.Request { +func setContext(r *http.Request, key, value any) *http.Request { return r.WithContext(context.WithValue(r.Context(), key, value)) } -func getContext(r *http.Request, key interface{}) interface{} { +func getContext(r *http.Request, key any) any { return r.Context().Value(key) } diff --git a/packages/api/database.go b/packages/api/database.go index def3b9dc..da0ace53 100644 --- a/packages/api/database.go +++ b/packages/api/database.go @@ -26,8 +26,8 @@ type rowsInfo struct { } type RowsListResult struct { - Count int64 `json:"count"` - List []map[string]interface{} `json:"list"` + Count int64 `json:"count"` + List []map[string]any `json:"list"` } func (f *tableInfoForm) Validate(r *http.Request) error { diff --git a/packages/api/errors.go b/packages/api/errors.go index ddb33f26..ffe6f4a7 100644 --- a/packages/api/errors.go +++ b/packages/api/errors.go @@ -68,7 +68,7 @@ func (et errType) Error() string { return et.Err } -func (et errType) Errorf(v ...interface{}) errType { +func (et errType) Errorf(v ...any) errType { et.Message = fmt.Sprintf(et.Message, v...) return et } diff --git a/packages/api/import_test.go b/packages/api/import_test.go index b917a3ba..34c8d4c8 100644 --- a/packages/api/import_test.go +++ b/packages/api/import_test.go @@ -24,7 +24,7 @@ func ImportApps(path, appname string) error { if err != nil { return err } - var val = make(map[interface{}]interface{}) + var val = make(map[any]any) val["Body"] = apps val["MimeType"] = "application/json" val["Name"] = appname + ".json" diff --git a/packages/api/interface_test.go b/packages/api/interface_test.go index b792dc12..328ca47c 100644 --- a/packages/api/interface_test.go +++ b/packages/api/interface_test.go @@ -26,7 +26,7 @@ func TestGetInterfaceRow(t *testing.T) { {"interface/snippet/", "NewSnippet", []string{"Name", "Value", "Conditions"}}, } - checkEqualAttrs := func(form url.Values, result map[string]interface{}, equalKeys []string) { + checkEqualAttrs := func(form url.Values, result map[string]any, equalKeys []string) { for _, key := range equalKeys { v := result[strings.ToLower(key)] assert.EqualValues(t, form.Get(key), v) @@ -47,7 +47,7 @@ func TestGetInterfaceRow(t *testing.T) { "Conditions": {"true"}, } assert.NoError(t, postTx(c.contract, &form)) - result := map[string]interface{}{} + result := map[string]any{} assert.NoError(t, sendGet(c.url+name, &url.Values{}, &result)) checkEqualAttrs(form, result, c.equalAttrs) } diff --git a/packages/api/ipfs.go b/packages/api/ipfs.go index fdfb5d77..bcc123a5 100644 --- a/packages/api/ipfs.go +++ b/packages/api/ipfs.go @@ -378,7 +378,7 @@ func filesLs(w http.ResponseWriter, r *http.Request) { } s := shell.NewShell(conf.IpfsHost()) - var out interface{} + var out any err := s.Request("files/ls").Option("arg", leadingSlash+converter.Int64ToStr(client.KeyID)+form.Paths).Option("l", true). Exec(context.Background(), &out) if err != nil { diff --git a/packages/api/list.go b/packages/api/list.go index 854dd58c..8bf323a6 100644 --- a/packages/api/list.go +++ b/packages/api/list.go @@ -167,7 +167,7 @@ func getListWhereHandler(w http.ResponseWriter, r *http.Request) { errorResponse(w, errors.New(`Where has wrong format`)) return } - case map[string]interface{}: + case map[string]any: where, err = qb.GetWhere(types.LoadMap(v)) if err != nil { errorResponse(w, err) @@ -260,7 +260,7 @@ func getnodeListWhereHandler(w http.ResponseWriter, r *http.Request) { errorResponse(w, errors.New(`Where has wrong format`)) return } - case map[string]interface{}: + case map[string]any: where, err = qb.GetWhere(types.LoadMap(v)) if err != nil { errorResponse(w, err) @@ -354,7 +354,7 @@ func getsumWhereHandler(w http.ResponseWriter, r *http.Request) { errorResponse(w, errors.New(`Where has wrong format`)) return } - case map[string]interface{}: + case map[string]any: where, err = qb.GetWhere(types.LoadMap(v)) if err != nil { errorResponse(w, err) diff --git a/packages/api/login.go b/packages/api/login.go index 86f64926..bcecb8c2 100644 --- a/packages/api/login.go +++ b/packages/api/login.go @@ -175,7 +175,7 @@ func (m Mode) loginHandler(w http.ResponseWriter, r *http.Request) { KeyID: conf.Config.KeyID, NetworkID: conf.Config.LocalConf.NetworkID, }, - Params: map[string]interface{}{ + Params: map[string]any{ "NewPubkey": hex.EncodeToString(publicKey), "Ecosystem": client.EcosystemID, }, diff --git a/packages/api/request.go b/packages/api/request.go index 548034ef..cbf4d603 100644 --- a/packages/api/request.go +++ b/packages/api/request.go @@ -71,7 +71,7 @@ func SendRawRequest(rtype, url, auth string, form *url.Values) ([]byte, error) { return data, nil } -func SendRequest(rtype, url, auth string, form *url.Values, v interface{}) error { +func SendRequest(rtype, url, auth string, form *url.Values, v any) error { data, err := SendRawRequest(rtype, url, auth, form) if err != nil { return err @@ -80,15 +80,15 @@ func SendRequest(rtype, url, auth string, form *url.Values, v interface{}) error return json.Unmarshal(data, v) } -func (connect *Connect) SendGet(url string, form *url.Values, v interface{}) error { +func (connect *Connect) SendGet(url string, form *url.Values, v any) error { return SendRequest("GET", connect.Root+url, connect.Auth, form, v) } -func (connect *Connect) SendPost(url string, form *url.Values, v interface{}) error { +func (connect *Connect) SendPost(url string, form *url.Values, v any) error { return SendRequest("POST", connect.Root+url, connect.Auth, form, v) } -func (connect *Connect) SendMultipart(url string, files map[string][]byte, v interface{}) error { +func (connect *Connect) SendMultipart(url string, files map[string][]byte, v any) error { body := new(bytes.Buffer) writer := multipart.NewWriter(body) @@ -214,7 +214,7 @@ func (connect *Connect) PostTxResult(name string, form *url.Values) (id int64, m if err = connect.SendGet("contract/"+name, nil, &contract); err != nil { return } - params := make(map[string]interface{}) + params := make(map[string]any) for _, field := range contract.Fields { name := field.Name value := form.Get(name) @@ -231,11 +231,11 @@ func (connect *Connect) PostTxResult(name string, form *url.Values) (id int64, m case "float": params[name], err = strconv.ParseFloat(value, 64) case "array": - var v interface{} + var v any err = json.Unmarshal([]byte(value), &v) params[name] = v case "map": - var v map[string]interface{} + var v map[string]any err = json.Unmarshal([]byte(value), &v) params[name] = v case "string", "money": diff --git a/packages/api/tx_record.go b/packages/api/tx_record.go index 52f3443c..b7ccb0c3 100644 --- a/packages/api/tx_record.go +++ b/packages/api/tx_record.go @@ -20,7 +20,7 @@ func getTxRecord(w http.ResponseWriter, r *http.Request) { var ( hashList []string - resultList []interface{} + resultList []any ) if len(hashes) > 0 { hashList = strings.Split(hashes, ",") diff --git a/packages/conf/syspar/syspar.go b/packages/conf/syspar/syspar.go index c5368f65..8e436b67 100644 --- a/packages/conf/syspar/syspar.go +++ b/packages/conf/syspar/syspar.go @@ -272,7 +272,7 @@ func GetNumberOfNodes() int64 { func GetNumberOfNodesFromDB(transaction *sqldb.DbTransaction) int64 { sp := &sqldb.PlatformParameter{} sp.GetTransaction(transaction, HonorNodes) - var honorNodes []map[string]interface{} + var honorNodes []map[string]any if len(sp.Value) > 0 { if err := json.Unmarshal([]byte(sp.Value), &honorNodes); err != nil { log.WithFields(log.Fields{"type": consts.JSONUnmarshallError, "error": err, "value": sp.Value}).Error("unmarshalling honor nodes from JSON") diff --git a/packages/conf/types.go b/packages/conf/types.go index 55200a05..8e7a236e 100644 --- a/packages/conf/types.go +++ b/packages/conf/types.go @@ -9,9 +9,9 @@ type ( // DBConfig database connection parameters DBConfig struct { - Name string - Host string - Port int + Name string + Host string + Port int User string Password string LockTimeout int // lock_timeout in milliseconds @@ -22,9 +22,9 @@ type ( //RedisConfig get redis information from config.yml RedisConfig struct { - Enable bool - Host string - Port int + Enable bool + Host string + Port int Password string DbName int } @@ -59,8 +59,8 @@ type ( // TokenMovementConfig smtp config for token movement TokenMovementConfig struct { - Host string - Port int + Host string + Port int Username string Password string To string diff --git a/packages/converter/converter.go b/packages/converter/converter.go index 55884e77..e998b878 100644 --- a/packages/converter/converter.go +++ b/packages/converter/converter.go @@ -214,7 +214,7 @@ func DecodeBytesBuf(buf *bytes.Buffer) ([]byte, error) { } // BinMarshal converts v parameter to []byte slice. -func BinMarshal(out *[]byte, v interface{}) (*[]byte, error) { +func BinMarshal(out *[]byte, v any) (*[]byte, error) { var err error t := reflect.ValueOf(v) @@ -273,7 +273,7 @@ func BinMarshal(out *[]byte, v interface{}) (*[]byte, error) { return out, nil } -func BinUnmarshalBuff(buf *bytes.Buffer, v interface{}) error { +func BinUnmarshalBuff(buf *bytes.Buffer, v any) error { t := reflect.ValueOf(v) if t.Kind() == reflect.Ptr { t = t.Elem() @@ -369,7 +369,7 @@ func BinUnmarshalBuff(buf *bytes.Buffer, v interface{}) error { } // BinUnmarshal converts []byte slice which has been made with BinMarshal to v -func BinUnmarshal(out *[]byte, v interface{}) error { +func BinUnmarshal(out *[]byte, v any) error { t := reflect.ValueOf(v) if t.Kind() == reflect.Ptr { t = t.Elem() @@ -531,7 +531,7 @@ func IntToStr(num int) string { } // DecToBin converts interface to []byte -func DecToBin(v interface{}, sizeBytes int64) []byte { +func DecToBin(v any, sizeBytes int64) []byte { var dec int64 switch v.(type) { case int: @@ -548,7 +548,7 @@ func DecToBin(v interface{}, sizeBytes int64) []byte { } // BinToHex converts interface to hex []byte -func BinToHex(v interface{}) []byte { +func BinToHex(v any) []byte { var bin []byte switch v.(type) { case []byte: @@ -562,7 +562,7 @@ func BinToHex(v interface{}) []byte { } // HexToBin converts hex interface to binary []byte -func HexToBin(ihexdata interface{}) []byte { +func HexToBin(ihexdata any) []byte { var hexdata string switch ihexdata.(type) { case []byte: @@ -608,7 +608,7 @@ func BytesShift(str *[]byte, index int64) (ret []byte) { } // InterfaceToStr converts the interfaces to the string -func InterfaceToStr(v interface{}) (string, error) { +func InterfaceToStr(v any) (string, error) { var str string if v == nil { return ``, nil @@ -641,7 +641,7 @@ func InterfaceToStr(v interface{}) (string, error) { } // InterfaceSliceToStr converts the slice of interfaces to the slice of strings -func InterfaceSliceToStr(i []interface{}) (strs []string, err error) { +func InterfaceSliceToStr(i []any) (strs []string, err error) { var val string for _, v := range i { val, err = InterfaceToStr(v) @@ -654,7 +654,7 @@ func InterfaceSliceToStr(i []interface{}) (strs []string, err error) { } // InterfaceToFloat64 converts the interfaces to the float64 -func InterfaceToFloat64(i interface{}) float64 { +func InterfaceToFloat64(i any) float64 { var result float64 switch i.(type) { case int: @@ -672,7 +672,7 @@ func InterfaceToFloat64(i interface{}) float64 { } // BytesShiftReverse gets []byte from the end of the input and cut the input pointer to []byte -func BytesShiftReverse(str *[]byte, v interface{}) []byte { +func BytesShiftReverse(str *[]byte, v any) []byte { var index int64 switch v.(type) { case int: @@ -767,7 +767,7 @@ func AddressToString(address int64) (ret string) { } // EncodeLengthPlusData encoding interface into []byte -func EncodeLengthPlusData(idata interface{}) []byte { +func EncodeLengthPlusData(idata any) []byte { var data []byte switch idata.(type) { case int64: @@ -987,7 +987,7 @@ func Escape(data string) string { } // FieldToBytes returns the value of n-th field of v as []byte -func FieldToBytes(v interface{}, num int) []byte { +func FieldToBytes(v any, num int) []byte { t := reflect.ValueOf(v) ret := make([]byte, 0, 2048) if t.Kind() == reflect.Struct && num < t.NumField() { @@ -1051,7 +1051,7 @@ func RoundWithoutPrecision(num float64) int64 { } // ValueToInt converts interface (string or int64) to int64 -func ValueToInt(v interface{}) (ret int64, err error) { +func ValueToInt(v any) (ret int64, err error) { switch val := v.(type) { case float64: ret = int64(val) @@ -1084,7 +1084,7 @@ func ValueToInt(v interface{}) (ret int64, err error) { return } -func ValueToDecimal(v interface{}) (ret decimal.Decimal, err error) { +func ValueToDecimal(v any) (ret decimal.Decimal, err error) { switch val := v.(type) { case float64: ret = decimal.NewFromFloat(val).Floor() @@ -1113,7 +1113,7 @@ func Int64Toint(dat int64) (int, error) { return strconv.Atoi(str) } -func MarshalJson(v interface{}) string { +func MarshalJson(v any) string { buff, err := json.Marshal(v) if err != nil { log.WithFields(log.Fields{"v": v, "error": err}).Error("marshalJson error") diff --git a/packages/daemons/block_generator_tx.go b/packages/daemons/block_generator_tx.go index ae031969..7974c5f5 100644 --- a/packages/daemons/block_generator_tx.go +++ b/packages/daemons/block_generator_tx.go @@ -44,7 +44,7 @@ func (dtx *DelayedTx) RunForDelayBlockID(blockID int64) ([]*sqldb.Transaction, e } txList := make([]*sqldb.Transaction, 0, len(contracts)) for _, c := range contracts { - params := make(map[string]interface{}) + params := make(map[string]any) params["Id"] = c.ID tx, err := dtx.createDelayTx(c.KeyID, c.HighRate, params) if err != nil { @@ -57,7 +57,7 @@ func (dtx *DelayedTx) RunForDelayBlockID(blockID int64) ([]*sqldb.Transaction, e return txList, nil } -func (dtx *DelayedTx) createDelayTx(keyID, highRate int64, params map[string]interface{}) (*sqldb.Transaction, error) { +func (dtx *DelayedTx) createDelayTx(keyID, highRate int64, params map[string]any) (*sqldb.Transaction, error) { vm := script.GetVM() contract := smart.VMGetContract(vm, callDelayedContract, uint32(firstEcosystemID)) info := contract.Info() diff --git a/packages/daemons/external_network.go b/packages/daemons/external_network.go index e10de3ff..b83aa4b6 100644 --- a/packages/daemons/external_network.go +++ b/packages/daemons/external_network.go @@ -88,7 +88,7 @@ func SendExternalTransaction() error { return } if err := transaction.CreateContract(item.ResultContract, nodeKeyID, - map[string]interface{}{ + map[string]any{ "Status": errCode, "Msg": resText, "Block": block, @@ -117,7 +117,7 @@ func SendExternalTransaction() error { } values := url.Values{"UID": {item.Uid}} - var params map[string]interface{} + var params map[string]any if err = json.Unmarshal([]byte(item.Value), ¶ms); err != nil { log.WithFields(log.Fields{"type": consts.JSONUnmarshallError, "error": err}).Error("Unmarshal params") delList = append(delList, item.Id) diff --git a/packages/daemons/monitoring.go b/packages/daemons/monitoring.go index 1f261268..225ecb3e 100644 --- a/packages/daemons/monitoring.go +++ b/packages/daemons/monitoring.go @@ -62,7 +62,7 @@ func Monitoring(w http.ResponseWriter, r *http.Request) { w.Write(buf.Bytes()) } -func addKey(buf *bytes.Buffer, key string, value interface{}) error { +func addKey(buf *bytes.Buffer, key string, value any) error { val, err := converter.InterfaceToStr(value) if err != nil { return err diff --git a/packages/migration/contracts_data.go b/packages/migration/contracts_data.go index 8840c0f8..28fc6775 100644 --- a/packages/migration/contracts_data.go +++ b/packages/migration/contracts_data.go @@ -40,4 +40,4 @@ contract DeveloperCondition { } } ', '{{.Ecosystem}}', 'ContractConditions("MainCondition")', '{{.AppID}}', '{{.Ecosystem}}'); -` \ No newline at end of file +` diff --git a/packages/migration/ecosystem.go b/packages/migration/ecosystem.go index 2dc65486..d108493a 100644 --- a/packages/migration/ecosystem.go +++ b/packages/migration/ecosystem.go @@ -126,7 +126,7 @@ func sqlConvert(in []string) (ret string, err error) { return } -func sqlTemplate(input []string, data interface{}) (ret string, err error) { +func sqlTemplate(input []string, data any) (ret string, err error) { for _, item := range input { var ( out bytes.Buffer diff --git a/packages/migration/gen/contracts.go b/packages/migration/gen/contracts.go index 1b264f85..69eec1a9 100644 --- a/packages/migration/gen/contracts.go +++ b/packages/migration/gen/contracts.go @@ -186,7 +186,7 @@ func generate(s scenario) error { pkg = defaultPackageName } - return contractsTemplate.Execute(file, map[string]interface{}{ + return contractsTemplate.Execute(file, map[string]any{ "Package": pkg, "Variable": s.Variable, "Ecosystem": s.Ecosystem, diff --git a/packages/network/tcpclient/pools.go b/packages/network/tcpclient/pools.go index 5a141ae8..bb452bbb 100644 --- a/packages/network/tcpclient/pools.go +++ b/packages/network/tcpclient/pools.go @@ -39,7 +39,7 @@ func (p *bytePool) Get(size int64) []byte { } pool := &sync.Pool{ - New: func() interface{} { return make([]byte, power) }, + New: func() any { return make([]byte, power) }, } p.pools[power] = pool diff --git a/packages/scheduler/contract/request.go b/packages/scheduler/contract/request.go index bb85639d..c4291b56 100644 --- a/packages/scheduler/contract/request.go +++ b/packages/scheduler/contract/request.go @@ -86,7 +86,7 @@ func NodeContract(Name string) (result contractResult, err error) { return } -func sendAPIRequest(rtype, url string, form *url.Values, v interface{}, auth string) error { +func sendAPIRequest(rtype, url string, form *url.Values, v any, auth string) error { client := &http.Client{} var ioform io.Reader if form != nil { diff --git a/packages/script/code_block.go b/packages/script/code_block.go index 237d563c..470906a8 100644 --- a/packages/script/code_block.go +++ b/packages/script/code_block.go @@ -34,9 +34,9 @@ type CodeBlock struct { Children CodeBlocks } -type codeBlockInfo struct{ i interface{} } +type codeBlockInfo struct{ i any } -func newCodeBlockInfo(i interface{}) *codeBlockInfo { return &codeBlockInfo{i: i} } +func newCodeBlockInfo(i any) *codeBlockInfo { return &codeBlockInfo{i: i} } func (i *codeBlockInfo) FuncInfo() *FuncInfo { return i.i.(*FuncInfo) } func (i *codeBlockInfo) Uint32() uint32 { return i.i.(uint32) } func (i *codeBlockInfo) ContractInfo() *ContractInfo { return i.i.(*ContractInfo) } @@ -49,13 +49,13 @@ func (i *codeBlockInfo) IsContractInfo() (*ContractInfo, bool) { type ByteCode struct { Cmd uint16 Line uint16 - Value interface{} + Value any } // CodeBlocks is a slice of blocks type CodeBlocks []*CodeBlock -func (bs *CodeBlocks) push(x interface{}) { +func (bs *CodeBlocks) push(x any) { *bs = append(*bs, x.(*CodeBlock)) } @@ -77,7 +77,7 @@ func (bs *CodeBlocks) get(idx int) *CodeBlock { // ByteCodes is the slice of ByteCode items type ByteCodes []*ByteCode -func (bs *ByteCodes) push(x interface{}) { +func (bs *ByteCodes) push(x any) { *bs = append(*bs, x.(*ByteCode)) } @@ -89,7 +89,7 @@ func (bs *ByteCodes) peek() *ByteCode { return (*bs)[bsLen-1] } -func newByteCode(cmd uint16, line uint16, value interface{}) *ByteCode { +func newByteCode(cmd uint16, line uint16, value any) *ByteCode { return &ByteCode{Cmd: cmd, Line: line, Value: value} } @@ -108,9 +108,9 @@ type ObjInfo struct { Value *objInfoValue } -type objInfoValue struct{ v interface{} } +type objInfoValue struct{ v any } -func newObjInfoValue(v interface{}) *objInfoValue { return &objInfoValue{v: v} } +func newObjInfoValue(v any) *objInfoValue { return &objInfoValue{v: v} } func (i *objInfoValue) CodeBlock() *CodeBlock { return i.v.(*CodeBlock) } func (i *objInfoValue) ExtFuncInfo() *ExtFuncInfo { return i.v.(*ExtFuncInfo) } func (i *objInfoValue) Int() int { return i.v.(int) } diff --git a/packages/script/compile.go b/packages/script/compile.go index 19247725..86fde853 100644 --- a/packages/script/compile.go +++ b/packages/script/compile.go @@ -43,7 +43,7 @@ const ( type mapItem struct { Type int - Value interface{} + Value any } // The compiler converts the sequence of lexemes into the bytecodes using a finite state machine the same as diff --git a/packages/script/compile_test.go b/packages/script/compile_test.go index 0dd4667e..39c2fc49 100644 --- a/packages/script/compile_test.go +++ b/packages/script/compile_test.go @@ -17,7 +17,7 @@ import ( type TestVM struct { Input string Func string - Output interface{} + Output any } func (block *CodeBlock) String() (ret string) { @@ -42,24 +42,24 @@ func getMap() *types.Map { return myMap } -func getArray() []interface{} { +func getArray() []any { myMap := types.NewMap() myMap.Set(`par0`, `Parameter 0`) myMap.Set(`par1`, `Parameter 1`) - return []interface{}{myMap, + return []any{myMap, "The second string", int64(2000)} } // Str converts the value to a string -func str(v interface{}) (ret string) { +func str(v any) (ret string) { return fmt.Sprint(v) } -func lenArray(par []interface{}) int64 { +func lenArray(par []any) int64 { return int64(len(par)) } -func Money(v interface{}) (ret decimal.Decimal) { +func Money(v any) (ret decimal.Decimal) { ret, _ = ValueToDecimal(v) return ret } @@ -678,7 +678,7 @@ func TestVMCompile(t *testing.T) { } vm := NewVM() vm.Extern = true - vm.Extend(&ExtendData{map[string]interface{}{"Println": fmt.Println, "Sprintf": fmt.Sprintf, + vm.Extend(&ExtendData{map[string]any{"Println": fmt.Println, "Sprintf": fmt.Sprintf, "GetMap": getMap, "GetArray": getArray, "lenArray": lenArray, "outMap": outMap, "str": str, "Money": Money, "Replace": strings.Replace}, nil, map[string]struct{}{"Sprintf": {}}}) @@ -697,8 +697,8 @@ func TestVMCompile(t *testing.T) { glob := types.NewMap() glob.Set(`test`, `String value`) glob.Set(`number`, 1001) - if out, err := vm.Call(item.Func, nil, &map[string]interface{}{ - `rt_state`: uint32(ikey) + 22, `data`: make([]interface{}, 0), + if out, err := vm.Call(item.Func, nil, &map[string]any{ + `rt_state`: uint32(ikey) + 22, `data`: make([]any, 0), `test1`: 101, `test2`: `test 2`, "glob": glob, `test3`: func(param int64) string { diff --git a/packages/script/eval.go b/packages/script/eval.go index fb511b27..3f74e9f9 100644 --- a/packages/script/eval.go +++ b/packages/script/eval.go @@ -39,7 +39,7 @@ func (vm *VM) CompileEval(input string, state uint32) error { } // EvalIf runs the conditional expression. It compiles the source code before that if that's necessary. -func (vm *VM) EvalIf(input string, state uint32, vars map[string]interface{}) (bool, error) { +func (vm *VM) EvalIf(input string, state uint32, vars map[string]any) (bool, error) { if len(input) == 0 { return true, nil } diff --git a/packages/script/eval_test.go b/packages/script/eval_test.go index 243b367c..b3038f24 100644 --- a/packages/script/eval_test.go +++ b/packages/script/eval_test.go @@ -52,12 +52,12 @@ func TestEvalIf(t *testing.T) { {"$citizenId && 0", "false"}, {"0|| ($citizenId + $wallet_id == 950240)", "true"}, } - vars := map[string]interface{}{ + vars := map[string]any{ `citizenId`: 56789, `wallet_id`: 893451, } vm := NewVM() - vm.Extend(&ExtendData{map[string]interface{}{"Multi": Multi}, nil, nil}) + vm.Extend(&ExtendData{map[string]any{"Multi": Multi}, nil, nil}) for _, item := range test { out, err := vm.EvalIf(item.Input, 0, &vars) if err != nil { diff --git a/packages/script/func.go b/packages/script/func.go index f2e5534a..45b7a58e 100644 --- a/packages/script/func.go +++ b/packages/script/func.go @@ -14,14 +14,14 @@ import ( // ExtendData is used for the definition of the extended functions and variables type ExtendData struct { - Objects map[string]interface{} + Objects map[string]any AutoPars map[string]string WriteFuncs map[string]struct{} } func NewExtendData() *ExtendData { return &ExtendData{ - Objects: map[string]interface{}{ + Objects: map[string]any{ "ExecContract": ExecContract, "CallContract": ExContract, "Settings": GetSettings, @@ -35,7 +35,7 @@ func NewExtendData() *ExtendData { // ExecContract runs the name contract where txs contains the list of parameters and // params are the values of parameters -func ExecContract(rt *RunTime, name, txs string, params ...interface{}) (interface{}, error) { +func ExecContract(rt *RunTime, name, txs string, params ...any) (any, error) { contract, ok := rt.vm.Objects[name] if !ok { @@ -60,7 +60,7 @@ func ExecContract(rt *RunTime, name, txs string, params ...interface{}) (interfa rt.extend[`loop_`+name] = true defer delete(rt.extend, `loop_`+name) - prevExtend := make(map[string]interface{}) + prevExtend := make(map[string]any) for key, item := range rt.extend { if isSysVar(key) { continue @@ -132,7 +132,7 @@ func ExecContract(rt *RunTime, name, txs string, params ...interface{}) (interfa if rt.extend[`sc`] != nil && isSignature { obj := rt.vm.Objects[`check_signature`] finfo := obj.Value.ExtFuncInfo() - if err := finfo.Func.(func(map[string]interface{}, string) error)(rt.extend, name); err != nil { + if err := finfo.Func.(func(map[string]any, string) error)(rt.extend, name); err != nil { logger.WithFields(log.Fields{"error": err, "func_name": finfo.Name, "type": consts.ContractError}).Error("executing exended function") return nil, err } @@ -174,7 +174,7 @@ func ExecContract(rt *RunTime, name, txs string, params ...interface{}) (interfa } // ExContract executes the name contract in the state with specified parameters -func ExContract(rt *RunTime, state uint32, name string, params *types.Map) (interface{}, error) { +func ExContract(rt *RunTime, state uint32, name string, params *types.Map) (any, error) { name = StateName(state, name) contract, ok := rt.vm.Objects[name] @@ -187,7 +187,7 @@ func ExContract(rt *RunTime, state uint32, name string, params *types.Map) (inte } logger := log.WithFields(log.Fields{"contract_name": name, "type": consts.ContractError}) names := make([]string, 0) - vals := make([]interface{}, 0) + vals := make([]any, 0) cblock := contract.Value.CodeBlock() if cblock.Info.ContractInfo().Tx != nil { for _, tx := range *cblock.Info.ContractInfo().Tx { @@ -210,7 +210,7 @@ func ExContract(rt *RunTime, state uint32, name string, params *types.Map) (inte } // GetSettings returns the value of the parameter -func GetSettings(rt *RunTime, cntname, name string) (interface{}, error) { +func GetSettings(rt *RunTime, cntname, name string) (any, error) { contract, ok := rt.vm.Objects[cntname] if !ok { log.WithFields(log.Fields{"contract_name": name, "type": consts.ContractError}).Error("unknown contract") diff --git a/packages/script/handle.go b/packages/script/handle.go index 000dca37..d701a7cf 100644 --- a/packages/script/handle.go +++ b/packages/script/handle.go @@ -204,7 +204,7 @@ func fFtail(buf *CodeBlocks, state stateTypes, lexem *Lexem) error { if used { return fmt.Errorf(`... parameter must be one`) } - fblock.Params[pkey] = reflect.TypeOf([]interface{}{}) + fblock.Params[pkey] = reflect.TypeOf([]any{}) used = true } } @@ -218,7 +218,7 @@ func fFtail(buf *CodeBlocks, state stateTypes, lexem *Lexem) error { if used { return fmt.Errorf(`... parameter must be one`) } - (*fblock.Names)[name].Params[pkey] = reflect.TypeOf([]interface{}{}) + (*fblock.Names)[name].Params[pkey] = reflect.TypeOf([]any{}) used = true } } @@ -231,7 +231,7 @@ func fFtail(buf *CodeBlocks, state stateTypes, lexem *Lexem) error { } for vkey, ivar := range block.Vars { if ivar == reflect.TypeOf(nil) { - block.Vars[vkey] = reflect.TypeOf([]interface{}{}) + block.Vars[vkey] = reflect.TypeOf([]any{}) } } return nil @@ -334,7 +334,7 @@ func fSettings(buf *CodeBlocks, state stateTypes, lexem *Lexem) error { logger.WithFields(log.Fields{"type": consts.ParseError, "contract_type": contract.Type, "lex_value": lexem.Value}).Error("data can only be in contract") return fmt.Errorf(`data can only be in contract`) } - (*contract).Info.ContractInfo().Settings = make(map[string]interface{}) + (*contract).Info.ContractInfo().Settings = make(map[string]any) return nil } diff --git a/packages/script/lex.go b/packages/script/lex.go index 15b66196..4a1e59d3 100644 --- a/packages/script/lex.go +++ b/packages/script/lex.go @@ -155,7 +155,7 @@ var ( `bytes`: {Original: DtBytes, Type: reflect.TypeOf([]byte{})}, `int`: {Original: DtInt, Type: reflect.TypeOf(int64(0))}, `address`: {Original: DtAddress, Type: reflect.TypeOf(int64(0))}, - `array`: {Original: DtArray, Type: reflect.TypeOf([]interface{}{})}, + `array`: {Original: DtArray, Type: reflect.TypeOf([]any{})}, `map`: {Original: DtMap, Type: reflect.TypeOf(&types.Map{})}, `money`: {Original: DtMoney, Type: reflect.TypeOf(decimal.Zero)}, `float`: {Original: DtFloat, Type: reflect.TypeOf(0.0)}, @@ -168,9 +168,9 @@ var ( type Lexem struct { Type uint32 // Type of the lexem Ext uint32 - Value interface{} // Value of lexem - Line uint16 // Line of the lexem - Column uint32 // Position inside the line + Value any // Value of lexem + Line uint16 // Line of the lexem + Column uint32 // Position inside the line } // GetLogger returns logger @@ -261,7 +261,7 @@ func lexParser(input []rune) (Lexems, error) { ifbuf[len(ifbuf)-1].stop = false } } - var value interface{} + var value any switch lexID { case lexNewLine: if input[lexOff] == rune(0x0a) { diff --git a/packages/script/runtime.go b/packages/script/runtime.go index 2a61bb0c..b62402e6 100644 --- a/packages/script/runtime.go +++ b/packages/script/runtime.go @@ -91,10 +91,10 @@ type ErrInfo struct { // RunTime is needed for the execution of the byte-code type RunTime struct { - stack []interface{} + stack []any blocks []*blockStack - vars []interface{} - extend map[string]interface{} + vars []any + extend map[string]any vm *VM cost int64 err error @@ -102,17 +102,17 @@ type RunTime struct { timeLimit bool callDepth uint16 mem int64 - memVars map[interface{}]int64 + memVars map[any]int64 errInfo ErrInfo } // NewRunTime creates a new RunTime for the virtual machine func NewRunTime(vm *VM, cost int64) *RunTime { return &RunTime{ - stack: make([]interface{}, 0, 1024), + stack: make([]any, 0, 1024), vm: vm, cost: cost, - memVars: make(map[interface{}]int64), + memVars: make(map[any]int64), } } @@ -141,7 +141,7 @@ func (rt *RunTime) callFunc(cmd uint16, obj *ObjInfo) (err error) { if rt.unwrap && cmd == cmdCallVari && size > 1 && reflect.TypeOf(rt.stack[size-2]).String() == `[]interface {}` { count = rt.stack[size-1].(int) - arr := rt.stack[size-2].([]interface{}) + arr := rt.stack[size-2].([]any) rt.stack = rt.stack[:size-2] for _, item := range arr { rt.stack = append(rt.stack, item) @@ -157,10 +157,10 @@ func (rt *RunTime) callFunc(cmd uint16, obj *ObjInfo) (err error) { count = in } if obj.Type == ObjectType_Func { - var imap map[string][]interface{} + var imap map[string][]any if obj.Value.CodeBlock().Info.FuncInfo().Names != nil { if rt.stack[size-1] != nil { - imap = rt.stack[size-1].(map[string][]interface{}) + imap = rt.stack[size-1].(map[string][]any) } rt.stack = rt.stack[:size-1] } @@ -170,7 +170,7 @@ func (rt *RunTime) callFunc(cmd uint16, obj *ObjInfo) (err error) { log.WithFields(log.Fields{"type": consts.VMError}).Error(errWrongCountPars.Error()) return errWrongCountPars } - pars := make([]interface{}, parcount) + pars := make([]any, parcount) shift := size - parcount for i := parcount; i > 0; i-- { pars[i-1] = rt.stack[size+i-parcount-1] @@ -186,14 +186,6 @@ func (rt *RunTime) callFunc(cmd uint16, obj *ObjInfo) (err error) { for i, v := range finfo.Params { switch v.Kind() { case reflect.String, reflect.Int64: - if v.Kind() == reflect.Int64 { - rv := reflect.ValueOf(rt.stack[len(rt.stack)-in+i]) - switch rv.Kind() { - case reflect.Float64: - val, _ := converter.ValueToInt(rt.stack[len(rt.stack)-in+i]) - rt.stack[len(rt.stack)-in+i] = val - } - } if reflect.TypeOf(rt.stack[len(rt.stack)-in+i]) != v { log.WithFields(log.Fields{"type": consts.VMError}).Error(eTypeParam) return fmt.Errorf(eTypeParam, i+1) @@ -292,7 +284,7 @@ func (rt *RunTime) callFunc(cmd uint16, obj *ObjInfo) (err error) { func (rt *RunTime) extendFunc(name string) error { var ( ok bool - f interface{} + f any ) if f, ok = rt.extend[name]; !ok || reflect.ValueOf(f).Kind().String() != `func` { return fmt.Errorf(`unknown function %s`, name) @@ -320,7 +312,7 @@ func (rt *RunTime) extendFunc(name string) error { return nil } -func calcMem(v interface{}) (mem int64) { +func calcMem(v any) (mem int64) { rv := reflect.ValueOf(v) switch rv.Kind() { @@ -358,7 +350,7 @@ func calcMem(v interface{}) (mem int64) { return } -func (rt *RunTime) setExtendVar(k string, v interface{}) { +func (rt *RunTime) setExtendVar(k string, v any) { rt.extend[k] = v rt.recalcMemExtendVar(k) } @@ -369,14 +361,14 @@ func (rt *RunTime) recalcMemExtendVar(k string) { rt.memVars[k] = mem } -func (rt *RunTime) addVar(v interface{}) { +func (rt *RunTime) addVar(v any) { rt.vars = append(rt.vars, v) mem := calcMem(v) rt.memVars[len(rt.vars)-1] = mem rt.mem += mem } -func (rt *RunTime) setVar(k int, v interface{}) { +func (rt *RunTime) setVar(k int, v any) { rt.vars[k] = v rt.recalcMemVar(k) } @@ -387,7 +379,7 @@ func (rt *RunTime) recalcMemVar(k int) { rt.memVars[k] = mem } -func valueToBool(v interface{}) bool { +func valueToBool(v any) bool { switch val := v.(type) { case int: if val != 0 { @@ -407,9 +399,9 @@ func valueToBool(v interface{}) bool { return len(val) > 0 case []uint8: return len(val) > 0 - case []interface{}: + case []any: return val != nil && len(val) > 0 - case map[string]interface{}: + case map[string]any: return val != nil && len(val) > 0 case map[string]string: return val != nil && len(val) > 0 @@ -423,7 +415,7 @@ func valueToBool(v interface{}) bool { } // ValueToFloat converts interface (string, float64 or int64) to float64 -func ValueToFloat(v interface{}) (ret float64) { +func ValueToFloat(v any) (ret float64) { var err error switch val := v.(type) { case float64: @@ -440,7 +432,7 @@ func ValueToFloat(v interface{}) (ret float64) { } // ValueToDecimal converts interface (string, float64, Decimal or int64) to Decimal -func ValueToDecimal(v interface{}) (ret decimal.Decimal, err error) { +func ValueToDecimal(v any) (ret decimal.Decimal, err error) { switch val := v.(type) { case float64: ret = decimal.NewFromFloat(val).Floor() @@ -470,7 +462,7 @@ func (rt *RunTime) Cost() int64 { } // SetVMError sets error of VM -func SetVMError(eType string, eText interface{}) error { +func SetVMError(eType string, eText any) error { errText := fmt.Sprintf(`%v`, eText) if len(errText) > MaxErrLen { errText = errText[:MaxErrLen] + `...` @@ -483,7 +475,7 @@ func SetVMError(eType string, eText interface{}) error { return fmt.Errorf(string(out)) } -func (rt *RunTime) getResultValue(item mapItem) (value interface{}, err error) { +func (rt *RunTime) getResultValue(item mapItem) (value any, err error) { switch item.Type { case mapConst: value = item.Value @@ -509,8 +501,8 @@ func (rt *RunTime) getResultValue(item mapItem) (value interface{}, err error) { return } -func (rt *RunTime) getResultArray(cmd []mapItem) ([]interface{}, error) { - initArr := make([]interface{}, 0) +func (rt *RunTime) getResultArray(cmd []mapItem) ([]any, error) { + initArr := make([]any, 0) for _, val := range cmd { value, err := rt.getResultValue(val) if err != nil { @@ -534,8 +526,8 @@ func (rt *RunTime) getResultMap(cmd *types.Map) (*types.Map, error) { return initMap, nil } -func isSelfAssignment(dest, value interface{}) bool { - if _, ok := value.([]interface{}); !ok { +func isSelfAssignment(dest, value any) bool { + if _, ok := value.([]any); !ok { if _, ok = value.(*types.Map); !ok { return false } @@ -544,7 +536,7 @@ func isSelfAssignment(dest, value interface{}) bool { return true } switch v := value.(type) { - case []interface{}: + case []any: for _, item := range v { if isSelfAssignment(dest, item) { @@ -574,7 +566,7 @@ func (rt *RunTime) RunCode(block *CodeBlock) (status int, err error) { stack := block.Parent.Info.ContractInfo() curContract = stack.Name } - if stack, ok := rt.extend["stack"].([]interface{}); ok { + if stack, ok := rt.extend["stack"].([]any); ok { curContract = stack[len(stack)-1].(string) } @@ -602,12 +594,12 @@ func (rt *RunTime) RunCode(block *CodeBlock) (status int, err error) { } } }() - top := make([]interface{}, 8) + top := make([]any, 8) rt.blocks = append(rt.blocks, &blockStack{Block: block, Offset: len(rt.vars)}) - var namemap map[string][]interface{} + var namemap map[string][]any if block.Type == ObjectType_Func && block.Info.FuncInfo().Names != nil { if rt.stack[len(rt.stack)-1] != nil { - namemap = rt.stack[len(rt.stack)-1].(map[string][]interface{}) + namemap = rt.stack[len(rt.stack)-1].(map[string][]any) } rt.stack = rt.stack[:len(rt.stack)-1] } @@ -615,15 +607,15 @@ func (rt *RunTime) RunCode(block *CodeBlock) (status int, err error) { varoff := len(rt.vars) for vkey, vpar := range block.Vars { rt.cost-- - var value interface{} + var value any if block.Type == ObjectType_Func && vkey < len(block.Info.FuncInfo().Params) { value = rt.stack[start-len(block.Info.FuncInfo().Params)+vkey] } else { value = reflect.New(vpar).Elem().Interface() if vpar == reflect.TypeOf(&types.Map{}) { value = types.NewMap() - } else if vpar == reflect.TypeOf([]interface{}{}) { - value = make([]interface{}, 0, len(rt.vars)+1) + } else if vpar == reflect.TypeOf([]any{}) { + value = make([]any, 0, len(rt.vars)+1) } } rt.addVar(value) @@ -634,7 +626,7 @@ func (rt *RunTime) RunCode(block *CodeBlock) (status int, err error) { for i, value := range item { if params.Variadic && i >= len(params.Params)-1 { off := varoff + params.Offset[len(params.Params)-1] - rt.setVar(off, append(rt.vars[off].([]interface{}), value)) + rt.setVar(off, append(rt.vars[off].([]any), value)) } else { rt.setVar(varoff+params.Offset[i], value) } @@ -668,7 +660,7 @@ main: } cmd = block.Code[ci] - var bin interface{} + var bin any size := len(rt.stack) if size < int(cmd.Cmd>>8) { rt.vm.logger.WithFields(log.Fields{"type": consts.VMError}).Error("stack is empty") @@ -763,20 +755,20 @@ main: ifunc := cmd.Value.(FuncNameCmd) mapoff := len(rt.stack) - 1 - ifunc.Count if rt.stack[mapoff] == nil { - rt.stack[mapoff] = make(map[string][]interface{}) + rt.stack[mapoff] = make(map[string][]any) } - params := make([]interface{}, 0, ifunc.Count) + params := make([]any, 0, ifunc.Count) for i := 0; i < ifunc.Count; i++ { cur := rt.stack[mapoff+1+i] if i == ifunc.Count-1 && rt.unwrap && reflect.TypeOf(cur).String() == `[]interface {}` { - params = append(params, cur.([]interface{})...) + params = append(params, cur.([]any)...) rt.unwrap = false } else { params = append(params, cur) } } - rt.stack[mapoff].(map[string][]interface{})[ifunc.Name] = params + rt.stack[mapoff].(map[string][]any)[ifunc.Name] = params rt.stack = rt.stack[:mapoff+1] continue case cmdCallVari, cmdCall: @@ -903,13 +895,13 @@ main: } ind := rt.stack[size-2].(int64) if strings.Contains(itype, Interface) { - slice := rt.stack[size-3].([]interface{}) + slice := rt.stack[size-3].([]any) if int(ind) >= len(slice) { if ind > maxArrayIndex { err = errMaxArrayIndex break } - slice = append(slice, make([]interface{}, int(ind)-len(slice)+1)...) + slice = append(slice, make([]any, int(ind)-len(slice)+1)...) indexInfo := cmd.Value.(*IndexInfo) if indexInfo.Owner == nil { // Extend variable $varname rt.extend[indexInfo.Extend] = slice @@ -1345,7 +1337,7 @@ main: } // Run executes CodeBlock with the specified parameters and extended variables and functions -func (rt *RunTime) Run(block *CodeBlock, params []interface{}, extend map[string]interface{}) (ret []interface{}, err error) { +func (rt *RunTime) Run(block *CodeBlock, params []any, extend map[string]any) (ret []any, err error) { defer func() { if r := recover(); r != nil { //rt.vm.logger.WithFields(log.Fields{"type": consts.PanicRecoveredError, "error_info": r, "stack": string(debug.Stack())}).Error("runtime panic error") diff --git a/packages/script/runtime_test.go b/packages/script/runtime_test.go index 491fa114..5318b68f 100644 --- a/packages/script/runtime_test.go +++ b/packages/script/runtime_test.go @@ -12,7 +12,7 @@ import ( func TestCalcMem(t *testing.T) { cases := []struct { - v interface{} + v any mem int64 }{ {true, 1}, diff --git a/packages/script/vm.go b/packages/script/vm.go index 0d140103..a63fe57d 100644 --- a/packages/script/vm.go +++ b/packages/script/vm.go @@ -118,7 +118,7 @@ func getContractList(src string) (list []string) { return } -func VMEvalIf(vm *VM, src string, state uint32, extend map[string]interface{}) (bool, error) { +func VMEvalIf(vm *VM, src string, state uint32, extend map[string]any) (bool, error) { return vm.EvalIf(src, state, extend) } @@ -126,7 +126,7 @@ func VMFlushBlock(vm *VM, root *CodeBlock) { vm.FlushBlock(root) } -func VMRun(vm *VM, block *CodeBlock, params []interface{}, extend map[string]interface{}) (ret []interface{}, err error) { +func VMRun(vm *VM, block *CodeBlock, params []any, extend map[string]any) (ret []any, err error) { var cost int64 if ecost, ok := extend[`txcost`]; ok { cost = ecost.(int64) @@ -181,7 +181,7 @@ func CompileEval(src string, prefix uint32) error { } // EvalIf calls EvalIf for smartVM -func EvalIf(src string, state uint32, extend map[string]interface{}) (bool, error) { +func EvalIf(src string, state uint32, extend map[string]any) (bool, error) { return VMEvalIf(smartVM, src, state, extend) } @@ -200,7 +200,7 @@ func FuncCallsDB(funcCallsDB map[string]struct{}) { } // Run executes CodeBlock in smartVM -func Run(block *CodeBlock, params []interface{}, extend map[string]interface{}) (ret []interface{}, err error) { +func Run(block *CodeBlock, params []any, extend map[string]any) (ret []any, err error) { return VMRun(smartVM, block, params, extend) } diff --git a/packages/script/vminit.go b/packages/script/vminit.go index 71cafc10..4b767c60 100644 --- a/packages/script/vminit.go +++ b/packages/script/vminit.go @@ -36,7 +36,7 @@ type ExtFuncInfo struct { Results []reflect.Type Auto []string Variadic bool - Func interface{} + Func any CanWrite bool // If the function can update DB } @@ -76,7 +76,7 @@ type ContractInfo struct { Owner *OwnerInfo Used map[string]bool // Called contracts Tx *[]*FieldInfo - Settings map[string]interface{} + Settings map[string]any CanWrite bool // If the function can update DB } @@ -153,7 +153,7 @@ func getNameByObj(obj *ObjInfo) (name string) { } // Call executes the name object with the specified params and extended variables and functions -func (vm *VM) Call(name string, params []interface{}, extend map[string]interface{}) (ret []interface{}, err error) { +func (vm *VM) Call(name string, params []any, extend map[string]any) (ret []any, err error) { var obj *ObjInfo if state, ok := extend[`rt_state`]; ok { obj = vm.getObjByNameExt(name, state.(uint32)) diff --git a/packages/service/jsonrpc/errors.go b/packages/service/jsonrpc/errors.go index d0a3dbb4..7404ac73 100644 --- a/packages/service/jsonrpc/errors.go +++ b/packages/service/jsonrpc/errors.go @@ -7,9 +7,9 @@ import ( type ErrorCode int type Error struct { - Code ErrorCode `json:"code"` - Message string `json:"message"` - Data map[string]interface{} `json:"data,omitempty"` + Code ErrorCode `json:"code"` + Message string `json:"message"` + Data map[string]any `json:"data,omitempty"` } const ( @@ -30,7 +30,7 @@ func (e *Error) Error() string { return e.Message } -func NewError(code ErrorCode, message string, data ...map[string]interface{}) *Error { +func NewError(code ErrorCode, message string, data ...map[string]any) *Error { e := Error{ Code: code, Message: message, @@ -50,44 +50,44 @@ func ParseError(message string) *Error { } } -func InvalidRequest(message string, data ...map[string]interface{}) *Error { +func InvalidRequest(message string, data ...map[string]any) *Error { return NewError(ErrCodeInvalidRequest, message, data...) } -func MethodNotFound(request *Request, data ...map[string]interface{}) *Error { +func MethodNotFound(request *Request, data ...map[string]any) *Error { message := fmt.Sprintf("The method %s does not exist/is not available", request.Method) return NewError(ErrCodeMethodNotFound, message, data...) } -func InvalidParams(message string, data ...map[string]interface{}) *Error { +func InvalidParams(message string, data ...map[string]any) *Error { return NewError(ErrCodeInvalidParams, message, data...) } -func InternalError(message string, data ...map[string]interface{}) *Error { +func InternalError(message string, data ...map[string]any) *Error { return NewError(ErrCodeInternalError, message, data...) } -func InvalidInput(message string, data ...map[string]interface{}) *Error { +func InvalidInput(message string, data ...map[string]any) *Error { return NewError(ErrCodeInvalidInput, message, data...) } -func ResourceNotFound(message string, data ...map[string]interface{}) *Error { +func ResourceNotFound(message string, data ...map[string]any) *Error { return NewError(ErrCodeResourceNotFound, message, data...) } -func ResourceUnavailable(message string, data ...map[string]interface{}) *Error { +func ResourceUnavailable(message string, data ...map[string]any) *Error { return NewError(ErrCodeResourceUnavailable, message, data...) } -func TransactionRejected(message string, data ...map[string]interface{}) *Error { +func TransactionRejected(message string, data ...map[string]any) *Error { return NewError(ErrCodeTransactionRejected, message, data...) } -func MethodNotSupported(request *Request, data ...map[string]interface{}) *Error { +func MethodNotSupported(request *Request, data ...map[string]any) *Error { message := fmt.Sprintf("method not supported %s", request.Method) return NewError(ErrCodeMethodNotSupported, message, data...) } -func LimitExceeded(message string, data ...map[string]interface{}) *Error { +func LimitExceeded(message string, data ...map[string]any) *Error { return NewError(ErrCodeLimitExceeded, message, data...) } diff --git a/packages/service/jsonrpc/handlers.go b/packages/service/jsonrpc/handlers.go index abaf0c2b..105e6ce9 100644 --- a/packages/service/jsonrpc/handlers.go +++ b/packages/service/jsonrpc/handlers.go @@ -49,7 +49,7 @@ var ( contextKeyRawJSON = contextKey("Raw JSON") ) -type requestHandlerFunc func(ctx RequestContext, request *Request) (interface{}, *Error) +type requestHandlerFunc func(ctx RequestContext, request *Request) (any, *Error) func (h requestHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { buff, err := ioutil.ReadAll(r.Body) @@ -79,12 +79,12 @@ func (h requestHandlerFunc) ServeHTTP(w http.ResponseWriter, r *http.Request) { WriteResponse(w, &request, result, e) } -func WriteResponse(w http.ResponseWriter, request *Request, result interface{}, e *Error) { +func WriteResponse(w http.ResponseWriter, request *Request, result any, e *Error) { response := struct { - JSONRPC string `json:"jsonrpc"` - ID *ID `json:"id,omitempty"` - Result interface{} `json:"result,omitempty"` - Error interface{} `json:"error,omitempty"` + JSONRPC string `json:"jsonrpc"` + ID *ID `json:"id,omitempty"` + Result any `json:"result,omitempty"` + Error any `json:"error,omitempty"` }{ JSONRPC: "2.0", } diff --git a/packages/service/jsonrpc/params.go b/packages/service/jsonrpc/params.go index f36f6900..dead380e 100644 --- a/packages/service/jsonrpc/params.go +++ b/packages/service/jsonrpc/params.go @@ -37,7 +37,7 @@ func (m *Param) UnmarshalJSON(data []byte) error { // // request.Params = jsonrpc.MustParams("latest", true) // -func MustParams(params ...interface{}) Params { +func MustParams(params ...any) Params { out, err := MakeParams(params...) if err != nil { panic(err) @@ -54,7 +54,7 @@ func MustParams(params ...interface{}) Params { // // params, err := jsonrpc.MakeParams(someComplexObject, "string", true) // -func MakeParams(params ...interface{}) (Params, error) { +func MakeParams(params ...any) (Params, error) { if len(params) == 0 { return nil, nil } @@ -83,7 +83,7 @@ func MakeParams(params ...interface{}) (Params, error) { // // IMPORTANT: While Go will compile with non-pointer receivers, the Unmarshal attempt will // *always* fail with an error. -func (p Params) UnmarshalInto(receivers ...interface{}) error { +func (p Params) UnmarshalInto(receivers ...any) error { if p == nil { return nil } @@ -108,7 +108,7 @@ func (p Params) UnmarshalInto(receivers ...interface{}) error { // // Example: // err := request.Params.UnmarshalSingleParam(pos, &blockNum) -func (p Params) UnmarshalSingleParam(pos int, receiver interface{}) error { +func (p Params) UnmarshalSingleParam(pos int, receiver any) error { if pos > (len(p) - 1) { return errors.New("not enough parameters to decode position") } diff --git a/packages/service/jsonrpc/request.go b/packages/service/jsonrpc/request.go index 72930ed6..2d14aae0 100644 --- a/packages/service/jsonrpc/request.go +++ b/packages/service/jsonrpc/request.go @@ -26,7 +26,7 @@ func NewRequest() *Request { // MakeRequest builds a Request from all its parts, but returns an error if the // params cannot be marshalled. -func MakeRequest(id int, method string, params ...interface{}) (*Request, error) { +func MakeRequest(id int, method string, params ...any) (*Request, error) { p, err := MakeParams(params...) if err != nil { return nil, err @@ -42,7 +42,7 @@ func MakeRequest(id int, method string, params ...interface{}) (*Request, error) // MustRequest builds a request from all its parts but panics if the params cannot be marshaled, // so should only be used with well-known parameter data. -func MustRequest(id int, method string, params ...interface{}) *Request { +func MustRequest(id int, method string, params ...any) *Request { r, err := MakeRequest(id, method, params...) if err != nil { panic(err) diff --git a/packages/service/jsonrpc/response.go b/packages/service/jsonrpc/response.go index 0eab2961..85bb968f 100644 --- a/packages/service/jsonrpc/response.go +++ b/packages/service/jsonrpc/response.go @@ -9,10 +9,10 @@ var ( ) type Response struct { - JSONRPC string `json:"jsonrpc"` - ID ID `json:"id"` - Result interface{} `json:"result,omitempty"` - Error interface{} `json:"error,omitempty"` + JSONRPC string `json:"jsonrpc"` + ID ID `json:"id"` + Result any `json:"result,omitempty"` + Error any `json:"error,omitempty"` } type BatchResponse []*Response @@ -27,9 +27,9 @@ func (r Response) MarshalJSON() ([]byte, error) { if r.Error != nil { response := struct { - JSONRPC string `json:"jsonrpc"` - ID ID `json:"id"` - Error interface{} `json:"error,omitempty"` + JSONRPC string `json:"jsonrpc"` + ID ID `json:"id"` + Error any `json:"error,omitempty"` }{ JSONRPC: "2.0", ID: r.ID, @@ -39,9 +39,9 @@ func (r Response) MarshalJSON() ([]byte, error) { return json.Marshal(response) } else { response := struct { - JSONRPC string `json:"jsonrpc"` - ID ID `json:"id"` - Result interface{} `json:"result,omitempty"` + JSONRPC string `json:"jsonrpc"` + ID ID `json:"id"` + Result any `json:"result,omitempty"` }{ JSONRPC: "2.0", ID: r.ID, diff --git a/packages/service/node/node_ban.go b/packages/service/node/node_ban.go index 8ef2e484..a0c08328 100644 --- a/packages/service/node/node_ban.go +++ b/packages/service/node/node_ban.go @@ -152,7 +152,7 @@ func (nbs *NodesBanService) newBadBlock(producer syspar.HonorNode, blockId, bloc Time: time.Now().Unix(), KeyID: conf.Config.KeyID, }, - Params: map[string]interface{}{ + Params: map[string]any{ "ProducerNodeID": crypto.Address(producer.PublicKey), "ConsumerNodeID": crypto.Address(currentNode.PublicKey), "BlockID": blockId, diff --git a/packages/smart/builtin_excel.go b/packages/smart/builtin_excel.go index af803c44..517e4e78 100644 --- a/packages/smart/builtin_excel.go +++ b/packages/smart/builtin_excel.go @@ -16,7 +16,7 @@ import ( ) // GetDataFromXLSX returns json by parameters range -func GetDataFromXLSX(sc *SmartContract, binaryID, startLine, linesCount, sheetNum int64) (data []interface{}, err error) { +func GetDataFromXLSX(sc *SmartContract, binaryID, startLine, linesCount, sheetNum int64) (data []any, err error) { book, err := excelBookFromStoredBinary(sc, binaryID) if err != nil || book == nil { return nil, err @@ -28,9 +28,9 @@ func GetDataFromXLSX(sc *SmartContract, binaryID, startLine, linesCount, sheetNu if endLine > int64(len(rows)) { endLine = int64(len(rows)) } - processedRows := []interface{}{} + processedRows := []any{} for ; startLine < endLine; startLine++ { - var row []interface{} + var row []any for _, item := range rows[startLine] { row = append(row, item) } diff --git a/packages/smart/contract.go b/packages/smart/contract.go index 881a1e91..abbc14e6 100644 --- a/packages/smart/contract.go +++ b/packages/smart/contract.go @@ -16,8 +16,8 @@ type Contract struct { TxGovAccount int64 // state wallet Rate float64 // money rate TableAccounts string - StackCont []interface{} // Stack of called contracts - Extend map[string]interface{} + StackCont []any // Stack of called contracts + Extend map[string]any Block *script.CodeBlock } diff --git a/packages/smart/funcs.go b/packages/smart/funcs.go index 221af650..4d2ec610 100644 --- a/packages/smart/funcs.go +++ b/packages/smart/funcs.go @@ -86,9 +86,9 @@ type permColumn struct { } type TxInfo struct { - Block string `json:"block,omitempty"` - Contract string `json:"contract,omitempty"` - Params map[string]interface{} `json:"params,omitempty"` + Block string `json:"block,omitempty"` + Contract string `json:"contract,omitempty"` + Params map[string]any `json:"params,omitempty"` } type TableInfo struct { @@ -179,8 +179,8 @@ var ( ) // EmbedFuncs is extending vm with embedded functions -func EmbedFuncs(vt script.VMType) map[string]interface{} { - f := map[string]interface{}{ +func EmbedFuncs(vt script.VMType) map[string]any { + f := map[string]any{ "AddressToId": AddressToID, "ColumnCondition": ColumnCondition, "Contains": strings.Contains, @@ -334,7 +334,7 @@ func accessContracts(sc *SmartContract, names ...string) bool { } // CompileContract is compiling contract -func CompileContract(sc *SmartContract, code string, state, id, token int64) (interface{}, error) { +func CompileContract(sc *SmartContract, code string, state, id, token int64) (any, error) { if err := validateAccess(sc, "CompileContract"); err != nil { return nil, err } @@ -342,7 +342,7 @@ func CompileContract(sc *SmartContract, code string, state, id, token int64) (in } // ContractAccess checks whether the name of the executable contract matches one of the names listed in the parameters. -func ContractAccess(sc *SmartContract, names ...interface{}) bool { +func ContractAccess(sc *SmartContract, names ...any) bool { if conf.Config.FuncBench { return true } @@ -370,7 +370,7 @@ func ContractAccess(sc *SmartContract, names ...interface{}) bool { } // RoleAccess checks whether the name of the role matches one of the names listed in the parameters. -func RoleAccess(sc *SmartContract, ids ...interface{}) (bool, error) { +func RoleAccess(sc *SmartContract, ids ...any) (bool, error) { rolesList, err := sqldb.GetMemberRoles(sc.DbTransaction, sc.TxSmart.EcosystemID, sc.Key.AccountID) if err != nil { return false, err @@ -394,7 +394,7 @@ func RoleAccess(sc *SmartContract, ids ...interface{}) (bool, error) { } // ContractConditions calls the 'conditions' function for each of the contracts specified in the parameters -func ContractConditions(sc *SmartContract, names ...interface{}) (bool, error) { +func ContractConditions(sc *SmartContract, names ...any) (bool, error) { for _, iname := range names { name := iname.(string) if len(name) > 0 { @@ -417,7 +417,7 @@ func ContractConditions(sc *SmartContract, names ...interface{}) (bool, error) { if err := sc.AppendStack(name); err != nil { return false, err } - _, err := script.VMRun(sc.VM, block, []interface{}{}, vars) + _, err := script.VMRun(sc.VM, block, []any{}, vars) if err != nil { return false, err } @@ -470,9 +470,9 @@ func UpdateContract(sc *SmartContract, id int64, value, conditions string, recip if err := validateAccess(sc, "UpdateContract"); err != nil { return err } - pars := make(map[string]interface{}) + pars := make(map[string]any) ecosystemID := sc.TxSmart.EcosystemID - var root interface{} + var root any if len(value) > 0 { var err error root, err = CompileContract(sc, value, ecosystemID, recipient, converter.StrToInt64(tokenID)) @@ -519,7 +519,7 @@ func CreateContract(sc *SmartContract, name, value, conditions string, tokenEcos if err != nil { return 0, err } - _, id, err = DBInsert(sc, "@1contracts", types.LoadMap(map[string]interface{}{ + _, id, err = DBInsert(sc, "@1contracts", types.LoadMap(map[string]any{ "name": name, "value": value, "conditions": conditions, @@ -546,7 +546,7 @@ func CreateContract(sc *SmartContract, name, value, conditions string, tokenEcos func getColumns(columns string) (colsSQL string, colout []byte, err error) { var ( sqlColType string - cols []interface{} + cols []any out []byte ) if err = unmarshalJSON([]byte(columns), &cols, "columns from json"); err != nil { @@ -555,14 +555,14 @@ func getColumns(columns string) (colsSQL string, colout []byte, err error) { colperm := make(map[string]string) colList := make(map[string]bool) for _, icol := range cols { - var data map[string]interface{} + var data map[string]any switch v := icol.(type) { case string: if err = unmarshalJSON([]byte(v), &data, `columns permissions from json`); err != nil { return } default: - data = v.(map[string]interface{}) + data = v.(map[string]any) } colname := converter.EscapeSQL(strings.ToLower(data[`name`].(string))) if err = checkColumnName(colname); err != nil { @@ -584,7 +584,7 @@ func getColumns(columns string) (colsSQL string, colout []byte, err error) { switch v := data[`conditions`].(type) { case string: condition = v - case map[string]interface{}: + case map[string]any: out, err = marshalJSON(v, `conditions to json`) if err != nil { return @@ -626,7 +626,7 @@ func CreateView(sc *SmartContract, vname, columns, where string, applicationID i } prefix, name := PrefixName(viewName) _, _, err = sc.insert([]string{`name`, `columns`, `wheres`, `app_id`, - `ecosystem`}, []interface{}{name, string(colout), string(whsout), + `ecosystem`}, []any{name, string(colout), string(whsout), applicationID, prefix}, `1_views`) if err != nil { return logErrorDB(err, "insert table info") @@ -847,7 +847,7 @@ func CreateTable(sc *SmartContract, name, columns, permissions string, applicati prefix, name := PrefixName(tableName) _, _, err = sc.insert([]string{`name`, `columns`, `permissions`, `conditions`, `app_id`, - `ecosystem`}, []interface{}{name, string(colout), string(permout), + `ecosystem`}, []any{name, string(colout), string(permout), `ContractAccess("@1EditTable")`, applicationID, prefix}, `1_tables`) if err != nil { return logErrorDB(err, "insert table info") @@ -870,7 +870,7 @@ func columnType(colType string) (string, error) { return ``, fmt.Errorf(eColumnType, colType) } -func mapToParams(values *types.Map) (params []string, val []interface{}, err error) { +func mapToParams(values *types.Map) (params []string, val []any, err error) { for _, key := range values.Keys() { v, _ := values.Get(key) params = append(params, converter.Sanitize(key, ` ->+`)) @@ -902,8 +902,8 @@ func DBInsert(sc *SmartContract, tblname string, values *types.Map) (qcost int64 if err != nil { return } - if reflect.TypeOf(val[0]) == reflect.TypeOf([]interface{}{}) { - val = val[0].([]interface{}) + if reflect.TypeOf(val[0]) == reflect.TypeOf([]any{}) { + val = val[0].([]any) } qcost, lastID, err = sc.insert(params, val, tblname) if ind > 0 { @@ -937,8 +937,8 @@ func PrepareColumns(columns []string) string { } // DBSelect returns an array of values of the specified columns when there is selection of data 'offset', 'limit', 'where' -func DBSelect(sc *SmartContract, tblname string, inColumns interface{}, id int64, inOrder interface{}, - offset, limit int64, inWhere *types.Map, query interface{}, group string, all bool) (int64, []interface{}, error) { +func DBSelect(sc *SmartContract, tblname string, inColumns any, id int64, inOrder any, + offset, limit int64, inWhere *types.Map, query any, group string, all bool) (int64, []any, error) { var ( err error @@ -1004,12 +1004,12 @@ func DBSelect(sc *SmartContract, tblname string, inColumns interface{}, id int64 return 0, nil, logErrorDB(err, "getting rows columns") } values := make([][]byte, len(cols)) - scanArgs := make([]interface{}, len(values)) + scanArgs := make([]any, len(values)) for i := range values { scanArgs[i] = &values[i] } - result := make([]interface{}, 0, 50) + result := make([]any, 0, 50) for rows.Next() { err = rows.Scan(scanArgs...) if err != nil { @@ -1064,7 +1064,7 @@ func DBUpdateExt(sc *SmartContract, tblname string, where *types.Map, // DBUpdate updates the item with the specified id in the table func DBUpdate(sc *SmartContract, tblname string, id int64, values *types.Map) (qcost int64, err error) { - return DBUpdateExt(sc, tblname, types.LoadMap(map[string]interface{}{`id`: id}), values) + return DBUpdateExt(sc, tblname, types.LoadMap(map[string]any{`id`: id}), values) } // EcosysParam returns the value of the specified parameter for the ecosystem @@ -1117,7 +1117,7 @@ func CheckCondition(sc *SmartContract, condition string) (bool, error) { } // FlushContract is flushing contract -func FlushContract(sc *SmartContract, iroot interface{}, id int64) error { +func FlushContract(sc *SmartContract, iroot any, id int64) error { if err := validateAccess(sc, "FlushContract"); err != nil { return err } @@ -1167,7 +1167,7 @@ func IsObject(sc *SmartContract, name string, state int64) bool { } // Len returns the length of the slice -func Len(in []interface{}) int64 { +func Len(in []any) int64 { if in == nil { return 0 } @@ -1198,13 +1198,13 @@ func PermTable(sc *SmartContract, name, permissions string) error { if !found { return fmt.Errorf(eTableNotFound, name) } - _, _, err = sc.update([]string{`permissions`}, []interface{}{string(permout)}, + _, _, err = sc.update([]string{`permissions`}, []any{string(permout)}, `1_tables`, `id`, tbl.ID) return err } func columnConditions(sc *SmartContract, columns string) (err error) { - var cols []interface{} + var cols []any if err = unmarshalJSON([]byte(columns), &cols, "columns permissions from json"); err != nil { return } @@ -1215,14 +1215,14 @@ func columnConditions(sc *SmartContract, columns string) (err error) { return logErrorfShort(eManyColumns, syspar.GetMaxColumns(), consts.ParameterExceeded) } for _, icol := range cols { - var data map[string]interface{} + var data map[string]any switch v := icol.(type) { case string: if err = unmarshalJSON([]byte(v), &data, `columns permissions from json`); err != nil { return err } default: - data = v.(map[string]interface{}) + data = v.(map[string]any) } if data[`name`] == nil || data[`type`] == nil { return logErrorShort(errWrongColumn, consts.InvalidObject) @@ -1234,7 +1234,7 @@ func columnConditions(sc *SmartContract, columns string) (err error) { switch v := data[`conditions`].(type) { case string: condition = v - case map[string]interface{}: + case map[string]any: out, err := marshalJSON(v, `conditions to json`) if err != nil { return err @@ -1498,7 +1498,7 @@ func CreateColumn(sc *SmartContract, tableName, name, colType, permissions strin if err != nil { return } - _, _, err = sc.update([]string{`columns`}, []interface{}{string(permout)}, + _, _, err = sc.update([]string{`columns`}, []any{string(permout)}, `1_tables`, `id`, temp.ID) if err != nil { return err @@ -1537,7 +1537,7 @@ func PermColumn(sc *SmartContract, tableName, name, permissions string) error { if err != nil { return err } - _, _, err = sc.update([]string{`columns`}, []interface{}{string(permout)}, + _, _, err = sc.update([]string{`columns`}, []any{string(permout)}, tables, `name`, tableName) return err } @@ -1584,8 +1584,8 @@ func HMac(key, data string, raw_output bool) (ret string, err error) { } // GetMapKeys returns the array of keys of the map -func GetMapKeys(in *types.Map) []interface{} { - keys := make([]interface{}, 0, in.Size()) +func GetMapKeys(in *types.Map) []any { + keys := make([]any, 0, in.Size()) for _, k := range in.Keys() { keys = append(keys, k) } @@ -1593,7 +1593,7 @@ func GetMapKeys(in *types.Map) []interface{} { } // SortedKeys returns the sorted array of keys of the map -func SortedKeys(m *types.Map) []interface{} { +func SortedKeys(m *types.Map) []any { i, sorted := 0, make([]string, m.Size()) for _, k := range m.Keys() { sorted[i] = k @@ -1601,14 +1601,14 @@ func SortedKeys(m *types.Map) []interface{} { } sort.Strings(sorted) - ret := make([]interface{}, len(sorted)) + ret := make([]any, len(sorted)) for k, v := range sorted { ret[k] = v } return ret } -func httpRequest(req *http.Request, headers map[string]interface{}) (string, error) { +func httpRequest(req *http.Request, headers map[string]any) (string, error) { for key, v := range headers { req.Header.Set(key, fmt.Sprint(v)) } @@ -1634,7 +1634,7 @@ func HTTPRequest(requrl, method string, head *types.Map, params *types.Map) (str var ioform io.Reader - headers := make(map[string]interface{}) + headers := make(map[string]any) for _, key := range head.Keys() { v, _ := head.Get(key) headers[key] = v @@ -1661,7 +1661,7 @@ func HTTPPostJSON(requrl string, head *types.Map, json_str string) (string, erro if err != nil { return ``, logError(err, consts.NetworkError, "new http request") } - headers := make(map[string]interface{}) + headers := make(map[string]any) for _, key := range head.Keys() { v, _ := head.Get(key) headers[key] = v @@ -1742,7 +1742,7 @@ func UpdateNodesBan(smartContract *SmartContract, timestamp int64) error { for _, b := range blocks { if _, err := DBUpdate(smartContract, "@1bad_blocks", b.ID, - types.LoadMap(map[string]interface{}{"deleted": "1"})); err != nil { + types.LoadMap(map[string]any{"deleted": "1"})); err != nil { return logErrorValue(err, consts.DBError, "deleting bad block", converter.Int64ToStr(b.ID)) } @@ -1758,7 +1758,7 @@ func UpdateNodesBan(smartContract *SmartContract, timestamp int64) error { _, _, err = DBInsert( smartContract, "@1node_ban_logs", - types.LoadMap(map[string]interface{}{ + types.LoadMap(map[string]any{ "node_id": nodeKeyID, "banned_at": now.Format(time.RFC3339), "ban_time": int64(syspar.GetNodeBanTime() / time.Millisecond), // in ms @@ -1773,7 +1773,7 @@ func UpdateNodesBan(smartContract *SmartContract, timestamp int64) error { _, _, err = DBInsert( smartContract, "@1notifications", - types.LoadMap(map[string]interface{}{ + types.LoadMap(map[string]any{ "recipient->member_id": nodeKeyID, "notification->type": sqldb.NotificationTypeSingle, "notification->header": nodeBanNotificationHeader, @@ -1817,7 +1817,7 @@ func GetBlock(blockID int64) (*types.Map, error) { return nil, nil } - return types.LoadMap(map[string]interface{}{ + return types.LoadMap(map[string]any{ "id": block.ID, "time": block.Time, "key_id": block.KeyID, @@ -1840,7 +1840,7 @@ func EncodeBase64(input string) (out string) { } // Hash returns hash sum of data -func Hash(data interface{}) (string, error) { +func Hash(data any) (string, error) { var b []byte switch v := data.(type) { @@ -1863,7 +1863,7 @@ func GetColumnType(sc *SmartContract, tableName, columnName string) (string, err } // GetType returns the name of the type of the value -func GetType(val interface{}) string { +func GetType(val any) string { if val == nil { return `nil` } @@ -1910,7 +1910,7 @@ func GetCLBList(sc *SmartContract) map[string]string { } func GetHistoryRaw(transaction *sqldb.DbTransaction, ecosystem int64, tableName string, - id, idRollback int64) ([]interface{}, error) { + id, idRollback int64) ([]any, error) { table := qb.GetTableName(ecosystem, tableName) rows, err := sqldb.GetDB(transaction).Table(table).Where("id=?", id).Rows() if err != nil { @@ -1928,7 +1928,7 @@ func GetHistoryRaw(transaction *sqldb.DbTransaction, ecosystem int64, tableName return nil, err } values := make([][]byte, len(columns)) - scanArgs := make([]interface{}, len(values)) + scanArgs := make([]any, len(values)) for i := range values { scanArgs[i] = &values[i] } @@ -1947,7 +1947,7 @@ func GetHistoryRaw(transaction *sqldb.DbTransaction, ecosystem int64, tableName } curVal.Set(columns[i], value) } - var rollbackList []interface{} + var rollbackList []any rollbackTx := &sqldb.RollbackTx{} txs, err := rollbackTx.GetRollbackTxsByTableIDAndTableName(converter.Int64ToStr(id), table, historyLimit) @@ -1979,7 +1979,7 @@ func GetHistoryRaw(transaction *sqldb.DbTransaction, ecosystem int64, tableName v, _ := curVal.Get(k) rollback.Set(k, v) } - var updValues map[string]interface{} + var updValues map[string]any if err := json.Unmarshal([]byte(tx.Data), &updValues); err != nil { log.WithFields(log.Fields{"type": consts.JSONUnmarshallError, "error": err}).Error("unmarshalling rollbackTx.Data from JSON") return nil, err @@ -1999,12 +1999,12 @@ func GetHistoryRaw(transaction *sqldb.DbTransaction, ecosystem int64, tableName prev.Set(`block_time`, ``) } if idRollback > 0 { - return []interface{}{}, nil + return []any{}, nil } return rollbackList, nil } -func GetHistory(sc *SmartContract, tableName string, id int64) ([]interface{}, error) { +func GetHistory(sc *SmartContract, tableName string, id int64) ([]any, error) { return GetHistoryRaw(sc.DbTransaction, sc.TxSmart.EcosystemID, tableName, id, 0) } @@ -2028,13 +2028,13 @@ func StackOverflow(sc *SmartContract) { StackOverflow(sc) } -func UpdateNotifications(sc *SmartContract, ecosystemID int64, accounts ...interface{}) { +func UpdateNotifications(sc *SmartContract, ecosystemID int64, accounts ...any) { accountList := make([]string, 0, len(accounts)) for i, id := range accounts { switch v := id.(type) { case string: accountList = append(accountList, v) - case []interface{}: + case []any: if i == 0 { UpdateNotifications(sc, ecosystemID, v...) return @@ -2044,7 +2044,7 @@ func UpdateNotifications(sc *SmartContract, ecosystemID int64, accounts ...inter sc.Notifications.AddAccounts(ecosystemID, accountList...) } -func UpdateRolesNotifications(sc *SmartContract, ecosystemID int64, roles ...interface{}) { +func UpdateRolesNotifications(sc *SmartContract, ecosystemID int64, roles ...any) { rolesList := make([]int64, 0, len(roles)) for i, roleID := range roles { switch v := roleID.(type) { @@ -2052,7 +2052,7 @@ func UpdateRolesNotifications(sc *SmartContract, ecosystemID int64, roles ...int rolesList = append(rolesList, v) case string: rolesList = append(rolesList, converter.StrToInt64(v)) - case []interface{}: + case []any: if i == 0 { UpdateRolesNotifications(sc, ecosystemID, v...) return @@ -2209,7 +2209,7 @@ func DelColumn(sc *SmartContract, tableName, name string) (err error) { if err = sc.DbTransaction.AlterTableDropColumn(tblname, name); err != nil { return } - _, _, err = sc.update([]string{`columns`}, []interface{}{string(permout)}, + _, _, err = sc.update([]string{`columns`}, []any{string(permout)}, `1_tables`, `id`, t.ID) if err != nil { return err @@ -2334,7 +2334,7 @@ func FormatMoney(sc *SmartContract, exp string, digit int64) (string, error) { return exp, nil } -func PubToHex(in interface{}) (ret string) { +func PubToHex(in any) (ret string) { switch v := in.(type) { case string: ret = crypto.PubToHex([]byte(v)) @@ -2363,7 +2363,7 @@ func SendExternalTransaction(sc *SmartContract, uid, url, externalContract strin Table: `external_blockchain`, Fields: []string{`value`, `uid`, `url`, `external_contract`, `result_contract`, `tx_time`}, - FieldValues: []interface{}{out, uid, url, externalContract, + FieldValues: []any{out, uid, url, externalContract, resultContract, sc.Timestamp}, KeyTableChkr: sqldb.KeyTableChecker{}, } diff --git a/packages/smart/gas.go b/packages/smart/gas.go index b82daad6..5221c7b3 100644 --- a/packages/smart/gas.go +++ b/packages/smart/gas.go @@ -92,11 +92,11 @@ func (f *fuelCategory) writeConversionRate(cr float64) { f.ConversionRate = 100 } -func (f *fuelCategory) Detail() (string, interface{}) { +func (f *fuelCategory) Detail() (string, any) { return f.CategoryString(), f.FeesInfo() } -func (f *fuelCategory) FeesInfo() interface{} { +func (f *fuelCategory) FeesInfo() any { detail := types.NewMap() detail.Set("decimal", f.decimal) detail.Set("value", f.Fees()) @@ -156,7 +156,7 @@ func (pay *paymentInfo) Copy() *paymentInfo { cpy := &paymentInfo{} return cpy } -func (pay *paymentInfo) Detail() interface{} { +func (pay *paymentInfo) Detail() any { detail := types.NewMap() for i := 0; i < len(pay.fuelCategories); i++ { detail.Set(pay.fuelCategories[i].Detail()) @@ -280,16 +280,16 @@ func (sc *SmartContract) payTaxes(pay *paymentInfo, sum decimal.Decimal, t int64 return nil } if _, _, err := sc.updateWhere( - []string{`-amount`}, []interface{}{sum}, "1_keys", - types.LoadMap(map[string]interface{}{ + []string{`-amount`}, []any{sum}, "1_keys", + types.LoadMap(map[string]any{ `id`: pay.fromID, `ecosystem`: pay.tokenEco, })); err != nil { return errTaxes } if _, _, err := sc.updateWhere( - []string{"+amount"}, []interface{}{sum}, "1_keys", - types.LoadMap(map[string]interface{}{ + []string{"+amount"}, []any{sum}, "1_keys", + types.LoadMap(map[string]any{ "id": toID, "ecosystem": pay.tokenEco, })); err != nil { @@ -309,7 +309,7 @@ func (sc *SmartContract) payTaxes(pay *paymentInfo, sum decimal.Decimal, t int64 if toIDBalance, err = sc.accountBalanceSingle(sc.DbTransaction, toID, pay.tokenEco); err != nil { return err } - values = types.LoadMap(map[string]interface{}{ + values = types.LoadMap(map[string]any{ "sender_id": pay.fromID, "sender_balance": fromIDBalance, "recipient_id": toID, @@ -349,7 +349,7 @@ func (sc *SmartContract) hasExitKeyID(eco, id int64) error { return err } if !found { - _, _, err = DBInsert(sc, "@1keys", types.LoadMap(map[string]interface{}{ + _, _, err = DBInsert(sc, "@1keys", types.LoadMap(map[string]any{ "id": id, "account": IDToAddress(id), "amount": 0, @@ -564,7 +564,7 @@ func (sc *SmartContract) prepareMultiPay() error { } func (sc *SmartContract) appendTokens(nums ...int64) error { - sc.TokenEcosystems = make(map[int64]interface{}) + sc.TokenEcosystems = make(map[int64]any) if len(sc.TokenEcosystems) == 0 { sc.TokenEcosystems[consts.DefaultTokenEcosystem] = nil } diff --git a/packages/smart/math.go b/packages/smart/math.go index 6c5741ca..a64db0cd 100644 --- a/packages/smart/math.go +++ b/packages/smart/math.go @@ -9,7 +9,7 @@ import ( "strconv" ) -func parseFloat(x interface{}) (float64, error) { +func parseFloat(x any) (float64, error) { var ( fx float64 err error @@ -34,7 +34,7 @@ func isValidFloat(x float64) bool { } // Floor returns the greatest integer value less than or equal to x -func Floor(x interface{}) (int64, error) { +func Floor(x any) (int64, error) { fx, err := parseFloat(x) if err != nil { return 0, err @@ -46,7 +46,7 @@ func Floor(x interface{}) (int64, error) { } // Log returns the natural logarithm of x -func Log(x interface{}) (float64, error) { +func Log(x any) (float64, error) { fx, err := parseFloat(x) if err != nil { return 0, err @@ -58,7 +58,7 @@ func Log(x interface{}) (float64, error) { } // Log10 returns the decimal logarithm of x -func Log10(x interface{}) (float64, error) { +func Log10(x any) (float64, error) { fx, err := parseFloat(x) if err != nil { return 0, err @@ -70,7 +70,7 @@ func Log10(x interface{}) (float64, error) { } // Pow returns x**y, the base-x exponential of y -func Pow(x, y interface{}) (float64, error) { +func Pow(x, y any) (float64, error) { fx, err := parseFloat(x) if err != nil { return 0, err @@ -86,7 +86,7 @@ func Pow(x, y interface{}) (float64, error) { } // Round returns the nearest integer, rounding half away from zero -func Round(x interface{}) (int64, error) { +func Round(x any) (int64, error) { fx, err := parseFloat(x) if err != nil { return 0, err @@ -98,7 +98,7 @@ func Round(x interface{}) (int64, error) { } // Sqrt returns the square root of x -func Sqrt(x interface{}) (float64, error) { +func Sqrt(x any) (float64, error) { fx, err := parseFloat(x) if err != nil { return 0, err diff --git a/packages/smart/selective.go b/packages/smart/selective.go index 69d45507..fe8bf6b6 100644 --- a/packages/smart/selective.go +++ b/packages/smart/selective.go @@ -34,7 +34,7 @@ func addRollback(sc *SmartContract, table, tableID, rollbackInfoStr string) erro return nil } -func (sc *SmartContract) selectiveLoggingAndUpd(fields []string, ivalues []interface{}, +func (sc *SmartContract) selectiveLoggingAndUpd(fields []string, ivalues []any, table string, inWhere *types.Map, generalRollback bool, exists bool) (int64, string, error) { var ( @@ -167,19 +167,19 @@ func (sc *SmartContract) selectiveLoggingAndUpd(fields []string, ivalues []inter return cost, sqlBuilder.TableID(), nil } -func (sc *SmartContract) insert(fields []string, ivalues []interface{}, +func (sc *SmartContract) insert(fields []string, ivalues []any, table string) (int64, string, error) { return sc.selectiveLoggingAndUpd(fields, ivalues, table, nil, !sc.CLB && sc.Rollback, false) } -func (sc *SmartContract) updateWhere(fields []string, values []interface{}, +func (sc *SmartContract) updateWhere(fields []string, values []any, table string, where *types.Map) (int64, string, error) { return sc.selectiveLoggingAndUpd(fields, values, table, where, !sc.CLB && sc.Rollback, true) } -func (sc *SmartContract) update(fields []string, values []interface{}, - table string, whereField string, whereValue interface{}) (int64, string, error) { - return sc.updateWhere(fields, values, table, types.LoadMap(map[string]interface{}{ +func (sc *SmartContract) update(fields []string, values []any, + table string, whereField string, whereValue any) (int64, string, error) { + return sc.updateWhere(fields, values, table, types.LoadMap(map[string]any{ whereField: fmt.Sprint(whereValue)})) } diff --git a/packages/smart/smart.go b/packages/smart/smart.go index 8b10b3e3..703878a7 100644 --- a/packages/smart/smart.go +++ b/packages/smart/smart.go @@ -58,7 +58,7 @@ type SmartContract struct { SysUpdate bool VM *script.VM TxSmart *types.SmartTransaction - TxData map[string]interface{} + TxData map[string]any TxContract *Contract TxFuel int64 // The fuel of executing contract TxCost int64 // Maximum cost of executing contract @@ -85,7 +85,7 @@ type SmartContract struct { multiPays multiPays taxes bool Penalty bool - TokenEcosystems map[int64]interface{} + TokenEcosystems map[int64]any } // AppendStack adds an element to the stack of contract call or removes the top element when name is empty @@ -189,7 +189,7 @@ func SetContractWallet(sc *SmartContract, tblid, state int64, wallet int64) erro return nil } -func (sc *SmartContract) getExtend() map[string]interface{} { +func (sc *SmartContract) getExtend() map[string]any { var block, blockTime, blockKeyID, blockNodePosition int64 var perBlockHash string if sc.BlockData != nil { @@ -202,7 +202,7 @@ func (sc *SmartContract) getExtend() map[string]interface{} { perBlockHash = hex.EncodeToString(sc.PreBlockData.Hash) } head := sc.TxSmart - extend := map[string]interface{}{ + extend := map[string]any{ `type`: head.ID, `time`: sc.Timestamp, `ecosystem_id`: head.EcosystemID, diff --git a/packages/smart/smart_p.go b/packages/smart/smart_p.go index 3ddaf841..d731a913 100644 --- a/packages/smart/smart_p.go +++ b/packages/smart/smart_p.go @@ -79,7 +79,7 @@ func getCost(name string) int64 { func UpdatePlatformParam(sc *SmartContract, name, value, conditions string) (int64, error) { var ( fields []string - values []interface{} + values []any ) par := &sqldb.PlatformParameter{} found, err := par.Get(sc.DbTransaction, name) @@ -203,12 +203,12 @@ func SysFuel(state int64) string { } // Int converts the value to a number -func Int(v interface{}) (int64, error) { +func Int(v any) (int64, error) { return converter.ValueToInt(v) } // Str converts the value to a string -func Str(v interface{}) (ret string) { +func Str(v any) (ret string) { if v == nil { return } @@ -222,23 +222,23 @@ func Str(v interface{}) (ret string) { } // Money converts the value into a numeric type for money -func Money(v interface{}) (decimal.Decimal, error) { +func Money(v any) (decimal.Decimal, error) { return script.ValueToDecimal(v) } -func MoneyDiv(d1, d2 interface{}) string { +func MoneyDiv(d1, d2 any) string { val1, _ := script.ValueToDecimal(d1) val2, _ := script.ValueToDecimal(d2) return val1.Div(val2).Mul(decimal.New(1, 2)).StringFixed(0) } // Float converts the value to float64 -func Float(v interface{}) (ret float64) { +func Float(v any) (ret float64) { return script.ValueToFloat(v) } // Join is joining input with separator -func Join(input []interface{}, sep string) string { +func Join(input []any, sep string) string { var ret string for i, item := range input { if i > 0 { @@ -250,9 +250,9 @@ func Join(input []interface{}, sep string) string { } // Split splits the input string to array -func Split(input, sep string) []interface{} { +func Split(input, sep string) []any { out := strings.Split(input, sep) - result := make([]interface{}, len(out)) + result := make([]any, len(out)) for i, val := range out { result[i] = reflect.ValueOf(val).Interface() } @@ -317,7 +317,7 @@ func CreateLanguage(sc *SmartContract, name, trans string) (id int64, err error) if err = language.UpdateLang(int(sc.TxSmart.EcosystemID), name, trans); err != nil { return 0, err } - if _, id, err = DBInsert(sc, `@1languages`, types.LoadMap(map[string]interface{}{"name": name, + if _, id, err = DBInsert(sc, `@1languages`, types.LoadMap(map[string]any{"name": name, "ecosystem": idStr, "res": trans})); err != nil { log.WithFields(log.Fields{"type": consts.DBError, "error": err}).Error("inserting new language") return 0, err @@ -334,7 +334,7 @@ func EditLanguage(sc *SmartContract, id int64, name, trans string) error { return err } if _, err := DBUpdate(sc, `@1languages`, id, - types.LoadMap(map[string]interface{}{"name": name, "res": trans})); err != nil { + types.LoadMap(map[string]any{"name": name, "res": trans})); err != nil { log.WithFields(log.Fields{"type": consts.DBError, "error": err}).Error("inserting new language") return err } @@ -437,32 +437,32 @@ func CreateEcosystem(sc *SmartContract, wallet int64, name string) (int64, error sc.FullAccess = true - if _, _, err = DBInsert(sc, "@1parameters", types.LoadMap(map[string]interface{}{ + if _, _, err = DBInsert(sc, "@1parameters", types.LoadMap(map[string]any{ "name": "ecosystem_wallet", "value": "0", "conditions": `ContractConditions("MainCondition")`, "ecosystem": idStr, })); err != nil { return 0, logErrorDB(err, "inserting system parameter") } - if _, _, err = DBInsert(sc, "@1applications", types.LoadMap(map[string]interface{}{ + if _, _, err = DBInsert(sc, "@1applications", types.LoadMap(map[string]any{ "name": "System", "conditions": `ContractConditions("MainCondition")`, "ecosystem": id, })); err != nil { return 0, logErrorDB(err, "inserting application") } - if _, _, err = DBInsert(sc, `@1pages`, types.LoadMap(map[string]interface{}{"ecosystem": idStr, + if _, _, err = DBInsert(sc, `@1pages`, types.LoadMap(map[string]any{"ecosystem": idStr, "name": "default_page", "app_id": appID, "value": SysParamString("default_ecosystem_page"), "menu": "default_menu", "conditions": `ContractConditions("DeveloperCondition")`})); err != nil { return 0, logErrorDB(err, "inserting default page") } - if _, _, err = DBInsert(sc, `@1menu`, types.LoadMap(map[string]interface{}{"ecosystem": idStr, + if _, _, err = DBInsert(sc, `@1menu`, types.LoadMap(map[string]any{"ecosystem": idStr, "name": "default_menu", "value": SysParamString("default_ecosystem_menu"), "title": "default", "conditions": `ContractConditions("DeveloperCondition")`})); err != nil { return 0, logErrorDB(err, "inserting default page") } var ( - ret []interface{} + ret []any pub string ) _, ret, err = DBSelect(sc, "@1keys", "pub", wallet, `id`, 0, 1, nil, "", "", false) @@ -475,7 +475,7 @@ func CreateEcosystem(sc *SmartContract, wallet int64, name string) (int64, error pub = v.(string) } } - if _, _, err := DBInsert(sc, `@1keys`, types.LoadMap(map[string]interface{}{ + if _, _, err := DBInsert(sc, `@1keys`, types.LoadMap(map[string]any{ "id": wallet, "account": converter.AddressToString(wallet), "pub": pub, @@ -487,7 +487,7 @@ func CreateEcosystem(sc *SmartContract, wallet int64, name string) (int64, error sc.FullAccess = false // because of we need to know which ecosystem to rollback. // All tables will be deleted so it's no need to rollback data from tables - if _, _, err := DBInsert(sc, "@1ecosystems", types.LoadMap(map[string]interface{}{ + if _, _, err := DBInsert(sc, "@1ecosystems", types.LoadMap(map[string]any{ "id": id, "name": name, })); err != nil { @@ -503,7 +503,7 @@ func EditEcosysName(sc *SmartContract, sysID int64, newName string) error { } _, err := DBUpdate(sc, "@1ecosystems", sysID, - types.LoadMap(map[string]interface{}{"name": newName})) + types.LoadMap(map[string]any{"name": newName})) return err } @@ -531,7 +531,7 @@ func BndWallet(sc *SmartContract, tblid int64, state int64) error { return err } - if _, _, err := sc.update([]string{"wallet_id"}, []interface{}{sc.TxSmart.KeyID}, "1_contracts", "id", tblid); err != nil { + if _, _, err := sc.update([]string{"wallet_id"}, []any{sc.TxSmart.KeyID}, "1_contracts", "id", tblid); err != nil { log.WithFields(log.Fields{"error": err, "contract_id": tblid}).Error("on updating contract wallet") return err } @@ -545,7 +545,7 @@ func UnbndWallet(sc *SmartContract, tblid int64, state int64) error { return err } - if _, _, err := sc.update([]string{"wallet_id"}, []interface{}{0}, "1_contracts", "id", tblid); err != nil { + if _, _, err := sc.update([]string{"wallet_id"}, []any{0}, "1_contracts", "id", tblid); err != nil { log.WithFields(log.Fields{"error": err, "contract_id": tblid}).Error("on updating contract wallet") return err } @@ -554,7 +554,7 @@ func UnbndWallet(sc *SmartContract, tblid int64, state int64) error { } // CheckSignature checks the additional signatures for the contract -func CheckSignature(sc *SmartContract, i map[string]interface{}, name string) error { +func CheckSignature(sc *SmartContract, i map[string]any, name string) error { state, name := converter.ParseName(name) sn := sqldb.Signature{} sn.SetTablePrefix(converter.Int64ToStr(int64(state))) @@ -595,7 +595,7 @@ func CheckSignature(sc *SmartContract, i map[string]interface{}, name string) er } // DBSelectMetrics returns list of metrics by name and time interval -func DBSelectMetrics(sc *SmartContract, metric, timeInterval, aggregateFunc string) ([]interface{}, error) { +func DBSelectMetrics(sc *SmartContract, metric, timeInterval, aggregateFunc string) ([]any, error) { if conf.Config.IsSupportingCLB() { return nil, ErrNotImplementedOnCLB } @@ -610,7 +610,7 @@ func DBSelectMetrics(sc *SmartContract, metric, timeInterval, aggregateFunc stri // DBCollectMetrics returns actual values of all metrics // This function used to further store these values -func DBCollectMetrics(sc *SmartContract) []interface{} { +func DBCollectMetrics(sc *SmartContract) []any { if conf.Config.IsSupportingCLB() { return nil } @@ -623,14 +623,14 @@ func DBCollectMetrics(sc *SmartContract) []interface{} { } // JSONDecode converts json string to object -func JSONDecode(input string) (ret interface{}, err error) { +func JSONDecode(input string) (ret any, err error) { err = unmarshalJSON([]byte(input), &ret, "unmarshalling json") ret = types.ConvertMap(ret) return } // JSONEncodeIndent converts object to json string -func JSONEncodeIndent(input interface{}, indent string) (string, error) { +func JSONEncodeIndent(input any, indent string) (string, error) { rv := reflect.ValueOf(input) if rv.Kind() == reflect.Ptr { rv = rv.Elem() @@ -658,12 +658,12 @@ func JSONEncodeIndent(input interface{}, indent string) (string, error) { } // JSONEncode converts object to json string -func JSONEncode(input interface{}) (string, error) { +func JSONEncode(input any) (string, error) { return JSONEncodeIndent(input, ``) } // Append syn for golang 'append' function -func Append(slice []interface{}, val interface{}) []interface{} { +func Append(slice []any, val any) []any { return append(slice, val) } diff --git a/packages/smart/smart_test.go b/packages/smart/smart_test.go index 801f2993..9d4d7905 100644 --- a/packages/smart/smart_test.go +++ b/packages/smart/smart_test.go @@ -5,11 +5,9 @@ package smart import ( - "testing" - - "github.com/stretchr/testify/require" - "github.com/IBAX-io/go-ibax/packages/script" + "github.com/stretchr/testify/require" + "testing" ) type TestSmart struct { @@ -54,7 +52,7 @@ func TestNewContract(t *testing.T) { } cnt := GetContract(`NewCitizen`, 1) cfunc := cnt.GetFunc(`conditions`) - _, err := script.Run(cfunc, nil, &map[string]interface{}{}) + _, err := script.Run(cfunc, nil, map[string]any{}) if err != nil { t.Error(err) } @@ -82,6 +80,6 @@ func TestCheckAppend(t *testing.T) { cnt := GetContract("AppendTest", 1) cfunc := cnt.GetFunc("action") - _, err := script.Run(cfunc, nil, &map[string]interface{}{}) + _, err := script.Run(cfunc, nil, map[string]any{}) require.NoError(t, err) } diff --git a/packages/smart/sysrollback.go b/packages/smart/sysrollback.go index 2e97ef28..31c3c973 100644 --- a/packages/smart/sysrollback.go +++ b/packages/smart/sysrollback.go @@ -105,7 +105,7 @@ func SysRollbackNewContract(sysData SysRollData, EcosystemID string) error { } // SysFlushContract is flushing contract -func SysFlushContract(iroot interface{}, id int64, active bool) error { +func SysFlushContract(iroot any, id int64, active bool) error { root := iroot.(*script.CodeBlock) if id != 0 { if len(root.Children) != 1 || root.Children[0].Type != script.ObjectType_Contract { diff --git a/packages/smart/utils.go b/packages/smart/utils.go index de8037ce..f1371ec8 100644 --- a/packages/smart/utils.go +++ b/packages/smart/utils.go @@ -24,7 +24,7 @@ func logError(err error, errType string, comment string) error { return err } -func logErrorf(pattern string, param interface{}, errType string, comment string) error { +func logErrorf(pattern string, param any, errType string, comment string) error { err := fmt.Errorf(pattern, param) log.WithFields(log.Fields{"type": errType, "error": err}).Error(comment) return err @@ -34,7 +34,7 @@ func logErrorShort(err error, errType string) error { return logError(err, errType, err.Error()) } -func logErrorfShort(pattern string, param interface{}, errType string) error { +func logErrorfShort(pattern string, param any, errType string) error { return logErrorShort(fmt.Errorf(pattern, param), errType) } @@ -47,14 +47,14 @@ func logErrorDB(err error, comment string) error { return logError(err, consts.DBError, comment) } -func unmarshalJSON(input []byte, v interface{}, comment string) (err error) { +func unmarshalJSON(input []byte, v any, comment string) (err error) { if err = json.Unmarshal(input, v); err != nil { return logErrorValue(err, consts.JSONUnmarshallError, comment, string(input)) } return nil } -func marshalJSON(v interface{}, comment string) (out []byte, err error) { +func marshalJSON(v any, comment string) (out []byte, err error) { out, err = json.Marshal(v) if err != nil { logError(err, consts.JSONMarshallError, comment) @@ -73,11 +73,11 @@ func validateAccess(sc *SmartContract, funcName string) error { return nil } -func FillTxData(fieldInfos []*script.FieldInfo, params map[string]interface{}) (map[string]interface{}, error) { - txData := make(map[string]interface{}) +func FillTxData(fieldInfos []*script.FieldInfo, params map[string]any) (map[string]any, error) { + txData := make(map[string]any) for _, fitem := range fieldInfos { var ( - v interface{} + v any ok bool err error index = fitem.Name @@ -171,34 +171,34 @@ func FillTxData(fieldInfos []*script.FieldInfo, params map[string]interface{}) ( break } case script.DtArray: - if v, ok = params[index].([]interface{}); !ok { + if v, ok = params[index].([]any); !ok { err = fmt.Errorf("invalid array type") break } - for i, subv := range v.([]interface{}) { + for i, subv := range v.([]any) { switch val := subv.(type) { - case map[interface{}]interface{}: - imap := make(map[string]interface{}) + case map[any]any: + imap := make(map[string]any) for ikey, ival := range val { imap[fmt.Sprint(ikey)] = ival } - v.([]interface{})[i] = types.LoadMap(imap) + v.([]any)[i] = types.LoadMap(imap) } } case script.DtMap: - var val map[interface{}]interface{} - if val, ok = params[index].(map[interface{}]interface{}); !ok { + var val map[any]any + if val, ok = params[index].(map[any]any); !ok { err = fmt.Errorf("invalid map type") break } - imap := make(map[string]interface{}) + imap := make(map[string]any) for ikey, ival := range val { imap[fmt.Sprint(ikey)] = ival } v = types.LoadMap(imap) case script.DtFile: - var val map[string]interface{} - if val, ok = params[index].(map[string]interface{}); !ok { + var val map[string]any + if val, ok = params[index].(map[string]any); !ok { err = fmt.Errorf("invalid file type") break } @@ -224,7 +224,7 @@ func FillTxData(fieldInfos []*script.FieldInfo, params map[string]interface{}) ( return txData, nil } -func getFieldDefaultValue(fieldType uint32) interface{} { +func getFieldDefaultValue(fieldType uint32) any { switch fieldType { case script.DtBool: return false @@ -239,7 +239,7 @@ func getFieldDefaultValue(fieldType uint32) interface{} { case script.DtBytes: return []byte{} case script.DtArray: - return []interface{}{} + return []any{} case script.DtMap: return types.NewMap() case script.DtFile: diff --git a/packages/storage/kvdb/leveldb/leveldb.go b/packages/storage/kvdb/leveldb/leveldb.go index 7ad55cf1..e09f12be 100644 --- a/packages/storage/kvdb/leveldb/leveldb.go +++ b/packages/storage/kvdb/leveldb/leveldb.go @@ -51,11 +51,11 @@ func Init_leveldb(filename string) error { return err } -func Struct2Map(obj interface{}) map[string]interface{} { +func Struct2Map(obj any) map[string]any { t := reflect.TypeOf(obj) v := reflect.ValueOf(obj) - var data = make(map[string]interface{}) + var data = make(map[string]any) for i := 0; i < t.NumField(); i++ { data[t.Field(i).Name] = v.Field(i).Interface() } diff --git a/packages/storage/kvdb/redis/goredis.go b/packages/storage/kvdb/redis/goredis.go index 3b44f76d..a119ba25 100644 --- a/packages/storage/kvdb/redis/goredis.go +++ b/packages/storage/kvdb/redis/goredis.go @@ -28,7 +28,7 @@ func RedisInit(conf conf.RedisConfig) error { GRedisIsactive = false Gclient0 = redis.NewClient(&redis.Options{ - Addr: fmt.Sprintf("%s:%d", conf.Host, conf.Port), + Addr: fmt.Sprintf("%s:%d", conf.Host, conf.Port), Password: conf.Password, // no password set DB: conf.DbName, // use default DB }) diff --git a/packages/storage/sqldb/database.go b/packages/storage/sqldb/database.go index 0eb2a0ad..9647f043 100644 --- a/packages/storage/sqldb/database.go +++ b/packages/storage/sqldb/database.go @@ -19,15 +19,15 @@ func GetNodeRows(tableName string) (int64, error) { return count, nil } -func GetRowsInfo(rows *sql.Rows, sqlQuest string) ([]map[string]interface{}, error) { - var result []map[string]interface{} +func GetRowsInfo(rows *sql.Rows, sqlQuest string) ([]map[string]any, error) { + var result []map[string]any defer rows.Close() columns, err := rows.Columns() if err != nil { return result, fmt.Errorf("getrows Columns err:%s in query %s", err, sqlQuest) } - values := make([]interface{} /*sql.RawBytes*/, len(columns)) - scanArgs := make([]interface{}, len(values)) + values := make([]any, len(columns)) + scanArgs := make([]any, len(values)) for i := range values { scanArgs[i] = &values[i] } @@ -36,8 +36,8 @@ func GetRowsInfo(rows *sql.Rows, sqlQuest string) ([]map[string]interface{}, err if err != nil { return result, fmt.Errorf("getRows scan err:%s in query %s", err, sqlQuest) } - var value interface{} - rez := make(map[string]interface{}) + var value any + rez := make(map[string]any) for i, col := range values { // Here we can check if the value is nil (NULL value) if col == nil { diff --git a/packages/storage/sqldb/metric.go b/packages/storage/sqldb/metric.go index bbcf6a62..7769ae97 100644 --- a/packages/storage/sqldb/metric.go +++ b/packages/storage/sqldb/metric.go @@ -57,7 +57,7 @@ func GetEcosystemTxPerDay(timeBlock int64) ([]*EcosystemTx, error) { } // GetMetricValues returns aggregated metric values in the time interval -func GetMetricValues(metric, timeInterval, aggregateFunc, timeBlock string) ([]interface{}, error) { +func GetMetricValues(metric, timeInterval, aggregateFunc, timeBlock string) ([]any, error) { rows, err := DBConn.Table(tableNameMetrics).Select("key,"+aggregateFunc+"(value)"). Where("metric = ? AND time >= EXTRACT(EPOCH FROM TIMESTAMP '"+timeBlock+"' - CAST(? AS INTERVAL))", metric, timeInterval).Order("id asc"). @@ -67,7 +67,7 @@ func GetMetricValues(metric, timeInterval, aggregateFunc, timeBlock string) ([]i } var ( - result = []interface{}{} + result = []any{} key string value string ) @@ -77,7 +77,7 @@ func GetMetricValues(metric, timeInterval, aggregateFunc, timeBlock string) ([]i return nil, err } - result = append(result, types.LoadMap(map[string]interface{}{ + result = append(result, types.LoadMap(map[string]any{ "key": key, "value": value, })) diff --git a/packages/storage/sqldb/notification.go b/packages/storage/sqldb/notification.go index e58a8f65..e2b9112f 100644 --- a/packages/storage/sqldb/notification.go +++ b/packages/storage/sqldb/notification.go @@ -83,7 +83,7 @@ func GetNotificationsCount(ecosystemID int64, accounts []string) ([]Notification return result, nil } -func getNotificationCountFilter(users []int64, ecosystemID int64) (filter string, params []interface{}) { +func getNotificationCountFilter(users []int64, ecosystemID int64) (filter string, params []any) { filter = fmt.Sprintf(` WHERE closed = 0 and ecosystem = '%d' `, ecosystemID) if len(users) > 0 { diff --git a/packages/storage/sqldb/platform_parameter.go b/packages/storage/sqldb/platform_parameter.go index 03a6ec27..00af9d02 100644 --- a/packages/storage/sqldb/platform_parameter.go +++ b/packages/storage/sqldb/platform_parameter.go @@ -81,7 +81,7 @@ func (sp *PlatformParameter) SaveArray(list [][]string) error { } func (sp *PlatformParameter) GetNumberOfHonorNodes() (int, error) { - var hns []map[string]interface{} + var hns []map[string]any f, err := sp.GetTransaction(nil, `honor_nodes`) if err != nil { return 0, err diff --git a/packages/storage/sqldb/queryBuilder/expression.go b/packages/storage/sqldb/queryBuilder/expression.go index e7dff96c..e2cadb45 100644 --- a/packages/storage/sqldb/queryBuilder/expression.go +++ b/packages/storage/sqldb/queryBuilder/expression.go @@ -8,7 +8,7 @@ import ( "github.com/IBAX-io/go-ibax/packages/types" ) -func GetOrder(tblname string, inOrder interface{}) (string, error) { +func GetOrder(tblname string, inOrder any) (string, error) { var ( orders []string defaultSortOrder = map[string]string{ @@ -18,7 +18,7 @@ func GetOrder(tblname string, inOrder interface{}) (string, error) { ) cols := types.NewMap() - sanitize := func(in string, value interface{}) { + sanitize := func(in string, value any) { in = converter.Sanitize(strings.ToLower(in), ``) if len(in) > 0 { cols.Set(in, true) @@ -51,11 +51,11 @@ func GetOrder(tblname string, inOrder interface{}) (string, error) { item, _ := v.Get(ikey) sanitize(ikey, item) } - case map[string]interface{}: + case map[string]any: for ikey, item := range v { sanitize(ikey, item) } - case []interface{}: + case []any: for _, item := range v { switch param := item.(type) { case string: @@ -65,7 +65,7 @@ func GetOrder(tblname string, inOrder interface{}) (string, error) { item, _ := param.Get(ikey) sanitize(ikey, item) } - case map[string]interface{}: + case map[string]any: for key, value := range param { sanitize(key, value) } @@ -83,7 +83,7 @@ func GetOrder(tblname string, inOrder interface{}) (string, error) { return strings.Join(orders, `,`), nil } -func GetColumns(inColumns interface{}) ([]string, error) { +func GetColumns(inColumns any) ([]string, error) { var columns []string switch v := inColumns.(type) { @@ -91,7 +91,7 @@ func GetColumns(inColumns interface{}) ([]string, error) { if len(v) > 0 { columns = strings.Split(v, `,`) } - case []interface{}: + case []any: for _, name := range v { switch col := name.(type) { case string: diff --git a/packages/storage/sqldb/queryBuilder/query_builder.go b/packages/storage/sqldb/queryBuilder/query_builder.go index aa0a4b65..707528d5 100644 --- a/packages/storage/sqldb/queryBuilder/query_builder.go +++ b/packages/storage/sqldb/queryBuilder/query_builder.go @@ -48,7 +48,7 @@ type SQLQueryBuilder struct { keyEcosystem string keyName string Fields []string - FieldValues []interface{} + FieldValues []any stringValues []string Where *types.Map KeyTableChkr KeyTableChecker @@ -365,7 +365,7 @@ func (b SQLQueryBuilder) normalizeValues() error { return nil } -func isParamsContainsEcosystem(fields []string, ivalues []interface{}) (bool, int) { +func isParamsContainsEcosystem(fields []string, ivalues []any) (bool, int) { ecosysIndx := getFieldIndex(fields, `ecosystem`) if ecosysIndx >= 0 && len(ivalues) > ecosysIndx && converter.StrToInt64(fmt.Sprint(ivalues[ecosysIndx])) > 0 { return true, ecosysIndx diff --git a/packages/storage/sqldb/queryBuilder/query_builder_test.go b/packages/storage/sqldb/queryBuilder/query_builder_test.go index 02ad2e01..ee8b4291 100644 --- a/packages/storage/sqldb/queryBuilder/query_builder_test.go +++ b/packages/storage/sqldb/queryBuilder/query_builder_test.go @@ -34,8 +34,8 @@ func TestSqlFields(t *testing.T) { Entry: log.WithFields(log.Fields{"mod": "test"}), Table: "1_keys", Fields: []string{"+amount"}, - FieldValues: []interface{}{2912910000000}, - Where: types.LoadMap(map[string]interface{}{`id`: `-6752330173818123413`}), + FieldValues: []any{2912910000000}, + Where: types.LoadMap(map[string]any{`id`: `-6752330173818123413`}), KeyTableChkr: TestKeyTableChecker{true}, } diff --git a/packages/storage/sqldb/queryBuilder/where.go b/packages/storage/sqldb/queryBuilder/where.go index 1c8d686b..4682c52d 100644 --- a/packages/storage/sqldb/queryBuilder/where.go +++ b/packages/storage/sqldb/queryBuilder/where.go @@ -59,29 +59,29 @@ func GetWhere(inWhere *types.Map) (string, error) { if inWhere == nil { inWhere = types.NewMap() } - escape := func(value interface{}) string { + escape := func(value any) string { return strings.Replace(fmt.Sprint(value), `'`, `''`, -1) } - oper := func(action string, v interface{}) (string, error) { + oper := func(action string, v any) (string, error) { switch value := v.(type) { default: return fmt.Sprintf(`%s '%s'`, action, escape(value)), nil } } - like := func(pattern string, v interface{}) (string, error) { + like := func(pattern string, v any) (string, error) { switch value := v.(type) { default: return fmt.Sprintf(pattern, escape(value)), nil } } - in := func(action string, v interface{}) (ret string, err error) { + in := func(action string, v any) (ret string, err error) { switch value := v.(type) { case string: if len(value) == 0 { return `false`, errWhereFalse } ret = fmt.Sprintf(`%s ('%s')`, action, value) - case []interface{}: + case []any: var list []string for _, ival := range value { list = append(list, escape(ival)) @@ -94,9 +94,9 @@ func GetWhere(inWhere *types.Map) (string, error) { } return } - logic := func(action string, v interface{}) (ret string, err error) { + logic := func(action string, v any) (ret string, err error) { switch value := v.(type) { - case []interface{}: + case []any: var list []string for _, ival := range value { switch avalue := ival.(type) { @@ -165,7 +165,7 @@ func GetWhere(inWhere *types.Map) (string, error) { key = `"` + key + `"` } switch value := v.(type) { - case []interface{}: + case []any: var acond []string for _, iarr := range value { switch avalue := iarr.(type) { diff --git a/packages/storage/sqldb/querycost/explain.go b/packages/storage/sqldb/querycost/explain.go index af2c07fd..25374129 100644 --- a/packages/storage/sqldb/querycost/explain.go +++ b/packages/storage/sqldb/querycost/explain.go @@ -19,7 +19,7 @@ import ( ) // explainQueryCost is counting query execution time -func explainQueryCost(transaction *sqldb.DbTransaction, withAnalyze bool, query string, args ...interface{}) (int64, error) { +func explainQueryCost(transaction *sqldb.DbTransaction, withAnalyze bool, query string, args ...any) (int64, error) { var planStr string explainTpl := "EXPLAIN (FORMAT JSON) %s" if withAnalyze { @@ -34,7 +34,7 @@ func explainQueryCost(transaction *sqldb.DbTransaction, withAnalyze bool, query log.WithFields(log.Fields{"type": consts.DBError, "error": err, "query": query}).Error("error explaining query") return 0, err } - var queryPlan []map[string]interface{} + var queryPlan []map[string]any dec := json.NewDecoder(strings.NewReader(planStr)) dec.UseNumber() if err := dec.Decode(&queryPlan); err != nil { @@ -46,14 +46,14 @@ func explainQueryCost(transaction *sqldb.DbTransaction, withAnalyze bool, query return 0, errors.New("Query plan is empty") } firstNode := queryPlan[0] - var plan interface{} + var plan any var ok bool if plan, ok = firstNode["Plan"]; !ok { log.Error("No Plan key in result") return 0, errors.New("No Plan key in result") } - planMap, ok := plan.(map[string]interface{}) + planMap, ok := plan.(map[string]any) if !ok { log.Error("Plan is not map[string]interface{}") return 0, errors.New("Plan is not map[string]interface{}") diff --git a/packages/storage/sqldb/querycost/formula.go b/packages/storage/sqldb/querycost/formula.go index d24efb67..835cc177 100644 --- a/packages/storage/sqldb/querycost/formula.go +++ b/packages/storage/sqldb/querycost/formula.go @@ -153,7 +153,7 @@ func (s DeleteQueryType) CalculateCost(rowCount int64) int64 { return DeleteCost + int64(DeleteRowCoeff*float64(rowCount)) } -func (f *FormulaQueryCoster) QueryCost(transaction *sqldb.DbTransaction, query string, args ...interface{}) (int64, error) { +func (f *FormulaQueryCoster) QueryCost(transaction *sqldb.DbTransaction, query string, args ...any) (int64, error) { cleanedQuery := strings.TrimSpace(strings.ToLower(query)) var queryType QueryType switch { diff --git a/packages/storage/sqldb/querycost/querycost.go b/packages/storage/sqldb/querycost/querycost.go index 97d8e082..ad73f822 100644 --- a/packages/storage/sqldb/querycost/querycost.go +++ b/packages/storage/sqldb/querycost/querycost.go @@ -18,20 +18,20 @@ const ( ) type QueryCoster interface { - QueryCost(*sqldb.DbTransaction, string, ...interface{}) (int64, error) + QueryCost(*sqldb.DbTransaction, string, ...any) (int64, error) } type ExplainQueryCoster struct { } -func (*ExplainQueryCoster) QueryCost(transaction *sqldb.DbTransaction, query string, args ...interface{}) (int64, error) { +func (*ExplainQueryCoster) QueryCost(transaction *sqldb.DbTransaction, query string, args ...any) (int64, error) { return explainQueryCost(transaction, true, query, args...) } type ExplainAnalyzeQueryCoster struct { } -func (*ExplainAnalyzeQueryCoster) QueryCost(transaction *sqldb.DbTransaction, query string, args ...interface{}) (int64, error) { +func (*ExplainAnalyzeQueryCoster) QueryCost(transaction *sqldb.DbTransaction, query string, args ...any) (int64, error) { return explainQueryCost(transaction, true, query, args...) } diff --git a/packages/storage/sqldb/responecode.go b/packages/storage/sqldb/responecode.go index 4612b4b4..ed2e4b48 100644 --- a/packages/storage/sqldb/responecode.go +++ b/packages/storage/sqldb/responecode.go @@ -127,7 +127,7 @@ func (et errType) Error() string { return et.Err } -func (et errType) Errorf(v ...interface{}) errType { +func (et errType) Errorf(v ...any) errType { et.Message = fmt.Sprintf(et.Message, v...) return et } diff --git a/packages/storage/sqldb/response.go b/packages/storage/sqldb/response.go index 39bb73c2..f6eb0772 100644 --- a/packages/storage/sqldb/response.go +++ b/packages/storage/sqldb/response.go @@ -14,9 +14,9 @@ package sqldb type Response struct { // 40003, " %s illegal media file type" // - Code int `json:"code" example:1` // 0: - Data interface{} `json:"data" example:""` - Message string `json:"message" example:""` // + Code int `json:"code" example:1` // 0: + Data any `json:"data" example:""` + Message string `json:"message" example:""` // } // TableName returns name of table @@ -32,7 +32,7 @@ func (r *Response) ReturnFailureString(str string) { } // TableName returns name of table -func (r *Response) Return(dat interface{}, ct CodeType) { +func (r *Response) Return(dat any, ct CodeType) { r.Code = ct.Code r.Message = ct.Message r.Data = dat diff --git a/packages/storage/sqldb/result.go b/packages/storage/sqldb/result.go index 49643025..37b65061 100644 --- a/packages/storage/sqldb/result.go +++ b/packages/storage/sqldb/result.go @@ -20,7 +20,7 @@ type SingleResult struct { } // Single is retrieving single result -func (dbTx *DbTransaction) Single(query string, args ...interface{}) *SingleResult { +func (dbTx *DbTransaction) Single(query string, args ...any) *SingleResult { var result []byte err := GetDB(dbTx).Raw(query, args...).Row().Scan(&result) switch { @@ -135,7 +135,7 @@ func (r *OneRow) Int() (map[string]int, error) { } // GetAllTransaction is retrieve all query result rows -func (dbTx *DbTransaction) GetAllTransaction(query string, countRows int, args ...interface{}) ([]map[string]string, error) { +func (dbTx *DbTransaction) GetAllTransaction(query string, countRows int, args ...any) ([]map[string]string, error) { request := GetDB(dbTx).Raw(query, args...) if countRows > 0 { request = request.Limit(countRows) @@ -153,17 +153,17 @@ func (dbTx *DbTransaction) GetAllTransaction(query string, countRows int, args . } // GetAll returns all transaction -func (dbTx *DbTransaction) GetAll(query string, countRows int, args ...interface{}) ([]map[string]string, error) { +func (dbTx *DbTransaction) GetAll(query string, countRows int, args ...any) ([]map[string]string, error) { return dbTx.GetAllTransaction(query, countRows, args) } // GetAllTx returns all tx's -func (dbTx *DbTransaction) GetAllTx(query string, countRows int, args ...interface{}) ([]map[string]string, error) { +func (dbTx *DbTransaction) GetAllTx(query string, countRows int, args ...any) ([]map[string]string, error) { return dbTx.GetAllTransaction(query, countRows, args) } // GetOneRowTransaction returns one row from transactions -func (dbTx *DbTransaction) GetOneRowTransaction(query string, args ...interface{}) *OneRow { +func (dbTx *DbTransaction) GetOneRowTransaction(query string, args ...any) *OneRow { result := make(map[string]string) all, err := dbTx.GetAllTransaction(query, 1, args...) if err != nil { @@ -176,7 +176,7 @@ func (dbTx *DbTransaction) GetOneRowTransaction(query string, args ...interface{ } // GetOneRow returns one row -func (dbTx *DbTransaction) GetOneRow(query string, args ...interface{}) *OneRow { +func (dbTx *DbTransaction) GetOneRow(query string, args ...any) *OneRow { return dbTx.GetOneRowTransaction(query, args...) } @@ -217,7 +217,7 @@ func (r *ListResult) String() ([]string, error) { } // GetList returns the result of the query as ListResult variable -func (dbTx *DbTransaction) GetList(query string, args ...interface{}) *ListResult { +func (dbTx *DbTransaction) GetList(query string, args ...any) *ListResult { var result []string all, err := dbTx.GetAll(query, -1, args...) if err != nil { @@ -245,7 +245,7 @@ func getResult(rows *sql.Rows, countRows int) ([]map[string]string, error) { // rows.Scan wants '[]interface{}' as an argument, so we must copy the // references into such a slice // See http://code.google.com/p/go-wiki/wiki/InterfaceSlice for details - scanArgs := make([]interface{}, len(values)) + scanArgs := make([]any, len(values)) for i := range values { scanArgs[i] = &values[i] } @@ -303,7 +303,7 @@ func getnodeResult(rows *sql.Rows, countRows int) ([]map[string]string, error) { // rows.Scan wants '[]interface{}' as an argument, so we must copy the // references into such a slice // See http://code.google.com/p/go-wiki/wiki/InterfaceSlice for details - scanArgs := make([]interface{}, len(values)) + scanArgs := make([]any, len(values)) for i := range values { scanArgs[i] = &values[i] } diff --git a/packages/storage/sqldb/tables.go b/packages/storage/sqldb/tables.go index e2cbdb98..ee1570d8 100644 --- a/packages/storage/sqldb/tables.go +++ b/packages/storage/sqldb/tables.go @@ -45,7 +45,7 @@ func (p Permissions) Value() (driver.Value, error) { } return string(data), err } -func (p *Permissions) Scan(v interface{}) error { +func (p *Permissions) Scan(v any) error { data, ok := v.([]byte) if !ok { return errors.New("Bad permissions") diff --git a/packages/storage/sqldb/transaction_status.go b/packages/storage/sqldb/transaction_status.go index df74c24a..c348a04b 100644 --- a/packages/storage/sqldb/transaction_status.go +++ b/packages/storage/sqldb/transaction_status.go @@ -63,7 +63,7 @@ func SetTransactionStatusBlockMsg(transaction *DbTransaction, newBlockID int64, } return GetDB(transaction).Model(&TransactionStatus{}).Where("hash = ?", transactionHash).Updates( - map[string]interface{}{"block_id": newBlockID, "error": msg}).Error + map[string]any{"block_id": newBlockID, "error": msg}).Error } func UpdateBlockMsgBatches(dbTx *gorm.DB, newBlockID int64) error { diff --git a/packages/storage/sqldb/tx_record.go b/packages/storage/sqldb/tx_record.go index 302de8a9..2b853ba5 100644 --- a/packages/storage/sqldb/tx_record.go +++ b/packages/storage/sqldb/tx_record.go @@ -11,7 +11,7 @@ import ( "github.com/IBAX-io/go-ibax/packages/converter" ) -func GetTxRecord(tx *DbTransaction, hashStr string) (resultList []interface{}, err error) { +func GetTxRecord(tx *DbTransaction, hashStr string) (resultList []any, err error) { db := GetDB(tx) // get record from rollback_tx var ( @@ -35,14 +35,14 @@ func GetTxRecord(tx *DbTransaction, hashStr string) (resultList []interface{}, e continue } values := make([][]byte, len(cols)) - scanArgs := make([]interface{}, len(values)) + scanArgs := make([]any, len(values)) for i := range values { scanArgs[i] = &values[i] } for rows.Next() { err = rows.Scan(scanArgs...) if err == nil { - row := make(map[string]interface{}) + row := make(map[string]any) for i, col := range values { var value string if col != nil { diff --git a/packages/template/calculate.go b/packages/template/calculate.go index 0a57ec5c..a227c2a6 100644 --- a/packages/template/calculate.go +++ b/packages/template/calculate.go @@ -32,7 +32,7 @@ const ( type token struct { Type int - Value interface{} + Value any } type opFunc func() @@ -48,7 +48,7 @@ func parsing(input string, itype int) (*[]token, error) { var err error tokens := make([]token, 0) - newToken := func(itype int, value interface{}) { + newToken := func(itype int, value any) { tokens = append(tokens, token{itype, value}) } prevNumber := func() bool { @@ -76,7 +76,7 @@ func parsing(input string, itype int) (*[]token, error) { continue } if numlen > 0 { - var val interface{} + var val any switch itype { case expInt: @@ -124,7 +124,7 @@ func parsing(input string, itype int) (*[]token, error) { func calcExp(tokens []token, resType int, prec string) string { var top int - stack := make([]interface{}, 0, 16) + stack := make([]any, 0, 16) addInt := func() { stack[top-1] = stack[top-1].(int64) + stack[top].(int64) diff --git a/packages/template/dbfind.go b/packages/template/dbfind.go index 282fba15..b9f4c4f1 100644 --- a/packages/template/dbfind.go +++ b/packages/template/dbfind.go @@ -71,16 +71,16 @@ func trimString(in []rune) string { return out } -func ParseObject(in []rune) (interface{}, int, error) { +func ParseObject(in []rune) (any, int, error) { var ( - ret interface{} + ret any key string mapMode, quote bool ) length := len(in) if in[0] == '[' { - ret = make([]interface{}, 0) + ret = make([]any, 0) } else if in[0] == '{' { ret = types.NewMap() mapMode = true @@ -89,7 +89,7 @@ func ParseObject(in []rune) (interface{}, int, error) { if mapMode { ret.(*types.Map).Set(key, "") } else if len(key) > 0 { - ret = append(ret.([]interface{}), types.LoadMap(map[string]interface{}{key: ``})) + ret = append(ret.([]any), types.LoadMap(map[string]any{key: ``})) } key = `` } @@ -119,7 +119,7 @@ main: if mapMode { if len(key) == 0 { switch v := par.(type) { - case map[string]interface{}: + case map[string]any: for ikey, ival := range v { ret.(*types.Map).Set(ikey, ival) } @@ -130,10 +130,10 @@ main: } } else { if len(key) > 0 { - par = types.LoadMap(map[string]interface{}{key: par}) + par = types.LoadMap(map[string]any{key: par}) key = `` } - ret = append(ret.([]interface{}), par) + ret = append(ret.([]any), par) } i += off start = i + 1 @@ -158,10 +158,10 @@ main: key = `` } else { if len(key) > 0 { - ret = append(ret.([]interface{}), types.LoadMap(map[string]interface{}{key: val})) + ret = append(ret.([]any), types.LoadMap(map[string]any{key: val})) key = `` } else { - ret = append(ret.([]interface{}), val) + ret = append(ret.([]any), val) } } } @@ -180,10 +180,10 @@ main: ret.(*types.Map).Set(key, last) } else { if len(key) > 0 { - ret = append(ret.([]interface{}), types.LoadMap(map[string]interface{}{key: last})) + ret = append(ret.([]any), types.LoadMap(map[string]any{key: last})) key = `` } else { - ret = append(ret.([]interface{}), last) + ret = append(ret.([]any), last) } } } else if len(key) > 0 { @@ -195,11 +195,11 @@ main: if v.Size() == 0 { ret = `` } - case map[string]interface{}: + case map[string]any: if len(v) == 0 { ret = `` } - case []interface{}: + case []any: if len(v) == 0 { ret = `` } diff --git a/packages/template/funcs.go b/packages/template/funcs.go index a8428597..85317271 100644 --- a/packages/template/funcs.go +++ b/packages/template/funcs.go @@ -33,8 +33,8 @@ import ( // Composite represents a composite contract type Composite struct { - Name string `json:"name"` - Data interface{} `json:"data,omitempty"` + Name string `json:"name"` + Data any `json:"data,omitempty"` } // Action describes a button action @@ -336,7 +336,7 @@ func paramToSource(par parFunc, val string) string { converter.StrToInt(getVar(par.Workspace, `ecosystem_id`)), getVar(par.Workspace, `lang`)) data = append(data, []string{converter.IntToStr(key + 1), item}) } - node := node{Tag: `data`, Attr: map[string]interface{}{`columns`: &cols, `types`: &types, + node := node{Tag: `data`, Attr: map[string]any{`columns`: &cols, `types`: &types, `data`: &data, `source`: (*par.Pars)[`Source`]}} par.Owner.Children = append(par.Owner.Children, &node) @@ -464,8 +464,8 @@ func actionTag(par parFunc) string { var params map[string]string if v, ok := par.Node.Attr["params"]; ok { params = make(map[string]string) - for key, val := range v.(map[string]interface{}) { - if imap, ok := val.(map[string]interface{}); ok { + for key, val := range v.(map[string]any) { + if imap, ok := val.(map[string]any); ok { params[key] = macro(fmt.Sprint(imap["text"]), par.Workspace.Vars) } else { params[key] = macro(fmt.Sprint(val), par.Workspace.Vars) @@ -579,7 +579,7 @@ func dataTag(par parFunc) string { func dbfindTag(par parFunc) string { var ( - inColumns interface{} + inColumns any columns []string state int64 err error @@ -628,7 +628,7 @@ func dbfindTag(par parFunc) string { } else { return errWhere.Error() } - case map[string]interface{}: + case map[string]any: where, err = qb.GetWhere(types.LoadMap(v)) if err != nil { return err.Error() @@ -845,7 +845,7 @@ func dbfindTag(par parFunc) string { data = append(data, row) } if perm != nil && len(perm[`filter`]) > 0 { - result := make([]interface{}, len(data)) + result := make([]any, len(data)) for i, item := range data { row := make(map[string]string) for j, col := range columnNames { @@ -854,7 +854,7 @@ func dbfindTag(par parFunc) string { result[i] = reflect.ValueOf(row).Interface() } fltResult, err := script.VMEvalIf(sc.VM, perm[`filter`], uint32(sc.TxSmart.EcosystemID), - map[string]interface{}{ + map[string]any{ `data`: result, `ecosystem_id`: sc.TxSmart.EcosystemID, `key_id`: sc.TxSmart.KeyID, `sc`: sc, @@ -902,9 +902,9 @@ func errredirTag(par parFunc) string { return `` } if par.Owner.Attr[`errredirect`] == nil { - par.Owner.Attr[`errredirect`] = make(map[string]map[string]interface{}) + par.Owner.Attr[`errredirect`] = make(map[string]map[string]any) } - par.Owner.Attr[`errredirect`].(map[string]map[string]interface{})[(*par.Pars)[`ErrorID`]] = + par.Owner.Attr[`errredirect`].(map[string]map[string]any)[(*par.Pars)[`ErrorID`]] = par.Node.Attr return `` } @@ -1113,7 +1113,7 @@ func buttonTag(par parFunc) string { if par.Node.Attr[`composites`] != nil { composites := make([]Composite, 0) for i, name := range par.Node.Attr[`composites`].([]string) { - var data interface{} + var data any input := par.Node.Attr[`compositedata`].([]string)[i] if len(input) > 0 { if err := json.Unmarshal([]byte(input), &data); err != nil { @@ -1285,7 +1285,7 @@ func jsontosourceTag(par parFunc) string { data := make([][]string, 0, 16) cols := []string{prefix + `key`, prefix + `value`} types := []string{`text`, `text`} - var out map[string]interface{} + var out map[string]any dataVal := macro((*par.Pars)[`Data`], par.Workspace.Vars) if len(dataVal) > 0 { json.Unmarshal([]byte(macro((*par.Pars)[`Data`], par.Workspace.Vars)), &out) @@ -1296,7 +1296,7 @@ func jsontosourceTag(par parFunc) string { } var value string switch v := item.(type) { - case map[string]interface{}: + case map[string]any: var keys, values []string for k := range v { keys = append(keys, k) diff --git a/packages/template/template.go b/packages/template/template.go index 607b88ef..96a5ad46 100644 --- a/packages/template/template.go +++ b/packages/template/template.go @@ -31,11 +31,11 @@ const ( ) type node struct { - Tag string `json:"tag"` - Attr map[string]interface{} `json:"attr,omitempty"` - Text string `json:"text,omitempty"` - Children []*node `json:"children,omitempty"` - Tail []*node `json:"tail,omitempty"` + Tag string `json:"tag"` + Attr map[string]any `json:"attr,omitempty"` + Text string `json:"text,omitempty"` + Children []*node `json:"children,omitempty"` + Tail []*node `json:"tail,omitempty"` } // Source describes dbfind or data source @@ -122,7 +122,7 @@ func setAttr(par parFunc, name string) { func setAllAttr(par parFunc) { for key, v := range *par.Pars { if key == `Params` || key == `PageParams` { - imap := make(map[string]interface{}) + imap := make(map[string]any) re := regexp.MustCompile(`(?is)(.*)\((.*)\)`) parList := make([]string, 0, 10) curPar := make([]rune, 0, 256) @@ -161,7 +161,7 @@ func setAllAttr(par parFunc) { parval = strings.TrimSpace(parval) if len(parval) > 0 { if off := strings.IndexByte(parval, '='); off == -1 { - imap[parval] = map[string]interface{}{ + imap[parval] = map[string]any{ `type`: `text`, `text`: parval} } else { val := strings.TrimSpace(parval[off+1:]) @@ -170,10 +170,10 @@ func setAllAttr(par parFunc) { for i, ilist := range plist { plist[i] = strings.TrimSpace(ilist) } - imap[strings.TrimSpace(parval[:off])] = map[string]interface{}{ + imap[strings.TrimSpace(parval[:off])] = map[string]any{ `type`: ret[1], `params`: plist} } else { - imap[strings.TrimSpace(parval[:off])] = map[string]interface{}{ + imap[strings.TrimSpace(parval[:off])] = map[string]any{ `type`: `text`, `text`: val} } } @@ -407,7 +407,7 @@ func callFunc(curFunc *tplFunc, owner *node, workspace *Workspace, params *[][]r } if len(curFunc.Tag) > 0 { curNode.Tag = curFunc.Tag - curNode.Attr = make(map[string]interface{}) + curNode.Attr = make(map[string]any) if len(pars[`Body`]) > 0 && curFunc.Tag != `custom` { if (curFunc.Tag != `if` && curFunc.Tag != `elseif`) || getVar(workspace, `_full`) == `1` { process(pars[`Body`], &curNode, workspace) @@ -432,12 +432,12 @@ func callFunc(curFunc *tplFunc, owner *node, workspace *Workspace, params *[][]r if !strings.HasPrefix(key, `#`) { parFunc.Node.Attr[key] = macro(attr, workspace.Vars) } - case map[string]interface{}: + case map[string]any: for parkey, parval := range attr { switch parmap := parval.(type) { - case map[string]interface{}: + case map[string]any: for textkey, textval := range parmap { - var result interface{} + var result any switch val := textval.(type) { case string: result = macro(val, workspace.Vars) @@ -448,7 +448,7 @@ func callFunc(curFunc *tplFunc, owner *node, workspace *Workspace, params *[][]r result = val } if result != nil { - parFunc.Node.Attr[key].(map[string]interface{})[parkey].(map[string]interface{})[textkey] = result + parFunc.Node.Attr[key].(map[string]any)[parkey].(map[string]any)[textkey] = result } } } diff --git a/packages/transaction/contract.go b/packages/transaction/contract.go index bab137fa..fe6ab1fd 100644 --- a/packages/transaction/contract.go +++ b/packages/transaction/contract.go @@ -21,7 +21,7 @@ const ( errUnknownContract = `Cannot find %s contract` ) -func CreateContract(contractName string, keyID int64, params map[string]interface{}, +func CreateContract(contractName string, keyID int64, params map[string]any, privateKey []byte) error { ecosysID, _ := converter.ParseName(contractName) if ecosysID == 0 { diff --git a/packages/transaction/limits.go b/packages/transaction/limits.go index 71963090..d78e2166 100644 --- a/packages/transaction/limits.go +++ b/packages/transaction/limits.go @@ -100,7 +100,7 @@ func (limits *Limits) CheckLimit(t *Transaction) error { return nil } -func limitError(limitName, msg string, args ...interface{}) error { +func limitError(limitName, msg string, args ...any) error { err := fmt.Errorf(msg, args...) log.WithFields(log.Fields{"type": consts.BlockError, "error": err}).Error(limitName) return script.SetVMError(`panic`, err) diff --git a/packages/transaction/smart_contract.go b/packages/transaction/smart_contract.go index 9389a400..42750142 100644 --- a/packages/transaction/smart_contract.go +++ b/packages/transaction/smart_contract.go @@ -168,7 +168,7 @@ func (s *SmartTransactionParser) parseFromContract(fillData bool) error { } s.TxContract = contract - s.TxData = make(map[string]interface{}) + s.TxData = make(map[string]any) txInfo := contract.Info().Tx if txInfo != nil { @@ -179,8 +179,8 @@ func (s *SmartTransactionParser) parseFromContract(fillData bool) error { } else { s.TxData = smartTx.Params for key, item := range s.TxData { - if v, ok := item.(map[interface{}]interface{}); ok { - imap := make(map[string]interface{}) + if v, ok := item.(map[any]any); ok { + imap := make(map[string]any) for ikey, ival := range v { imap[fmt.Sprint(ikey)] = ival } diff --git a/packages/types/custom_tx.go b/packages/types/custom_tx.go index 0392e1e8..97391c1f 100644 --- a/packages/types/custom_tx.go +++ b/packages/types/custom_tx.go @@ -62,7 +62,7 @@ type SmartTransaction struct { Lang string Expedite string SignedBy int64 - Params map[string]interface{} + Params map[string]any } func (s *SmartTransaction) TxType() byte { return SmartContractTxType } diff --git a/packages/types/file.go b/packages/types/file.go index fcaf2204..53555594 100644 --- a/packages/types/file.go +++ b/packages/types/file.go @@ -7,15 +7,15 @@ package types //type File *Map func NewFile() *Map { - return LoadMap(map[string]interface{}{ + return LoadMap(map[string]any{ "Name": "", "MimeType": "", "Body": []byte{}, }) } -func NewFileFromMap(m map[string]interface{}) (f *Map, ok bool) { - var v interface{} +func NewFileFromMap(m map[string]any) (f *Map, ok bool) { + var v any f = NewFile() if v, ok = m["Name"].(string); !ok { diff --git a/packages/types/map.go b/packages/types/map.go index 690886f6..7f9596c7 100644 --- a/packages/types/map.go +++ b/packages/types/map.go @@ -17,7 +17,7 @@ import ( // Link represents a node of doubly linked list type Link struct { key string - value interface{} + value any next *Link prev *Link } @@ -30,7 +30,7 @@ type Map struct { tail *Link } -func newLink(key string, value interface{}) *Link { +func newLink(key string, value any) *Link { return &Link{key: key, value: value, next: nil, prev: nil} } @@ -39,9 +39,9 @@ func NewMap() *Map { return &Map{m: make(map[string]*Link), head: nil, tail: nil} } -func ConvertMap(in interface{}) interface{} { +func ConvertMap(in any) any { switch v := in.(type) { - case map[string]interface{}: + case map[string]any: out := NewMap() keys := make([]string, 0, len(v)) for key := range v { @@ -52,7 +52,7 @@ func ConvertMap(in interface{}) interface{} { out.Set(key, ConvertMap(v[key])) } return out - case []interface{}: + case []any: for i, item := range v { v[i] = ConvertMap(item) } @@ -61,7 +61,7 @@ func ConvertMap(in interface{}) interface{} { } // LoadMap instantiates a linked hash map and initializing it from map[string]interface{}. -func LoadMap(init map[string]interface{}) (ret *Map) { +func LoadMap(init map[string]any) (ret *Map) { ret = NewMap() keys := make([]string, 0, len(init)) for key := range init { @@ -75,7 +75,7 @@ func LoadMap(init map[string]interface{}) (ret *Map) { } // Put inserts an element into the map. -func (m *Map) Set(key string, value interface{}) { +func (m *Map) Set(key string, value any) { link, found := m.m[key] if !found { link = newLink(key, value) @@ -95,7 +95,7 @@ func (m *Map) Set(key string, value interface{}) { // Get searches the element in the map by key and returns its value or nil if key doesn't exists. // Second return parameter is true if key was found, otherwise false. -func (m *Map) Get(key string) (value interface{}, found bool) { +func (m *Map) Get(key string) (value any, found bool) { var link *Link link, found = m.m[key] if found { @@ -149,8 +149,8 @@ func (m *Map) Keys() []string { } // Values returns all values of the map (insertion order). -func (m *Map) Values() []interface{} { - values := make([]interface{}, m.Size()) +func (m *Map) Values() []any { + values := make([]any, m.Size()) count := 0 for current := m.head; current != nil; current = current.next { values[count] = current.value diff --git a/packages/utils/metric/collector.go b/packages/utils/metric/collector.go index 6aa57c7a..13d33239 100644 --- a/packages/utils/metric/collector.go +++ b/packages/utils/metric/collector.go @@ -22,7 +22,7 @@ type Value struct { // ToMap returns values as map func (v *Value) ToMap() *types.Map { - return types.LoadMap(map[string]interface{}{ + return types.LoadMap(map[string]any{ "time": v.Time, "metric": v.Metric, "key": v.Key, @@ -36,8 +36,8 @@ type Collector struct { } // Values returns values of all metrics -func (c *Collector) Values(timeBlock int64) []interface{} { - values := make([]interface{}, 0) +func (c *Collector) Values(timeBlock int64) []any { + values := make([]any, 0) for _, fn := range c.funcs { result, err := fn(timeBlock) if err != nil { diff --git a/packages/utils/metric/collector_test.go b/packages/utils/metric/collector_test.go index a09bc1fb..4427de2c 100644 --- a/packages/utils/metric/collector_test.go +++ b/packages/utils/metric/collector_test.go @@ -27,7 +27,7 @@ func MockCollectorFunc(v int64, err error) CollectorFunc { func TestValue(t *testing.T) { value := MockValue(100) - result := map[string]interface{}{"time": int64(1), "metric": "test_metric", "key": "ecosystem_1", "value": int64(100)} + result := map[string]any{"time": int64(1), "metric": "test_metric", "key": "ecosystem_1", "value": int64(100)} assert.Equal(t, result, value.ToMap()) } @@ -38,9 +38,9 @@ func TestCollector(t *testing.T) { MockCollectorFunc(200, nil), ) - result := []interface{}{ - map[string]interface{}{"time": int64(1), "metric": "test_metric", "key": "ecosystem_1", "value": int64(100)}, - map[string]interface{}{"time": int64(1), "metric": "test_metric", "key": "ecosystem_1", "value": int64(200)}, + result := []any{ + map[string]any{"time": int64(1), "metric": "test_metric", "key": "ecosystem_1", "value": int64(100)}, + map[string]any{"time": int64(1), "metric": "test_metric", "key": "ecosystem_1", "value": int64(200)}, } assert.Equal(t, result, c.Values()) } diff --git a/packages/utils/utils.go b/packages/utils/utils.go index d2dd11de..33234a3b 100644 --- a/packages/utils/utils.go +++ b/packages/utils/utils.go @@ -60,12 +60,12 @@ func GetHTTPTextAnswer(url string) (string, error) { } // ErrInfoFmt fomats the error message -func ErrInfoFmt(err string, a ...interface{}) error { +func ErrInfoFmt(err string, a ...any) error { return fmt.Errorf("%s (%s)", fmt.Sprintf(err, a...), Caller(1)) } // ErrInfo formats the error message -func ErrInfo(verr interface{}, additionally ...string) error { +func ErrInfo(verr any, additionally ...string) error { var err error switch verr.(type) { case error: @@ -83,7 +83,7 @@ func ErrInfo(verr interface{}, additionally ...string) error { } // CallMethod calls the function by its name -func CallMethod(i interface{}, methodName string) interface{} { +func CallMethod(i any, methodName string) any { var ptr reflect.Value var value reflect.Value var finalMethod reflect.Value diff --git a/tools/desync_monitor/query/query.go b/tools/desync_monitor/query/query.go index 82a7bd66..48a32bdd 100644 --- a/tools/desync_monitor/query/query.go +++ b/tools/desync_monitor/query/query.go @@ -24,7 +24,7 @@ type blockInfoResult struct { func MaxBlockIDs(nodesList []string) ([]int64, error) { wg := sync.WaitGroup{} - workResults := ConcurrentMap{m: map[string]interface{}{}} + workResults := ConcurrentMap{m: map[string]any{}} for _, nodeUrl := range nodesList { wg.Add(1) go func(url string) { @@ -52,7 +52,7 @@ func MaxBlockIDs(nodesList []string) ([]int64, error) { func BlockInfo(nodesList []string, blockID int64) (map[string]*blockInfoResult, error) { wg := sync.WaitGroup{} - workResults := ConcurrentMap{m: map[string]interface{}{}} + workResults := ConcurrentMap{m: map[string]any{}} for _, nodeUrl := range nodesList { wg.Add(1) go func(url string) { diff --git a/tools/desync_monitor/query/utils.go b/tools/desync_monitor/query/utils.go index bbbb50eb..caf6ec04 100644 --- a/tools/desync_monitor/query/utils.go +++ b/tools/desync_monitor/query/utils.go @@ -11,24 +11,24 @@ import ( ) type ConcurrentMap struct { - m map[string]interface{} + m map[string]any mu sync.RWMutex } -func (c *ConcurrentMap) Set(key string, value interface{}) { +func (c *ConcurrentMap) Set(key string, value any) { c.mu.Lock() defer c.mu.Unlock() c.m[key] = value } -func (c *ConcurrentMap) Get(key string) (bool, interface{}) { +func (c *ConcurrentMap) Get(key string) (bool, any) { c.mu.RLock() defer c.mu.RUnlock() res, ok := c.m[key] return ok, res } -func sendGetRequest(url string, v interface{}) error { +func sendGetRequest(url string, v any) error { resp, err := http.Get(url) if err != nil { log.WithFields(log.Fields{"url": url, "error": err}).Error("get requesting url")