mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-10-04 20:41:58 +00:00
feat(resolvemcp): read/write limits, preload validation, query timeout, stable client error codes
Config gains DefaultLimit/MaxLimit/MaxOffset/MaxBatch/MaxPreloadDepth/MaxWriteRows/QueryTimeout/
ConfirmTTL. Reads are capped and the total COUNT is optional. Errors reach clients as
{code,message}; everything else is logged with a reference. Panics (handler and hooks) are
recovered without returning the panic value.
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package resolvemcp
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
@@ -23,7 +22,7 @@ func writeColumns(model interface{}, data map[string]interface{}) (map[string]in
|
||||
modelType = modelType.Elem()
|
||||
}
|
||||
if modelType == nil || modelType.Kind() != reflect.Struct {
|
||||
return nil, fmt.Errorf("invalid model")
|
||||
return nil, errInternal
|
||||
}
|
||||
|
||||
accepted := make(map[string]string)
|
||||
@@ -44,13 +43,13 @@ func writeColumns(model interface{}, data map[string]interface{}) (map[string]in
|
||||
continue
|
||||
}
|
||||
if _, dup := out[col]; dup {
|
||||
return nil, fmt.Errorf("column %q given more than once", col)
|
||||
return nil, invalidArg("column %q given more than once", col)
|
||||
}
|
||||
out[col] = value
|
||||
}
|
||||
if len(unknown) > 0 {
|
||||
sort.Strings(unknown)
|
||||
return nil, fmt.Errorf("unknown or read-only fields: %s", strings.Join(unknown, ", "))
|
||||
return nil, invalidArg("unknown or read-only fields: %s", strings.Join(unknown, ", "))
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user