data-cursor.go: reset and clean operations return (bool,error)

This commit is contained in:
Celestino Amoroso 2024-05-04 00:37:31 +02:00
parent 6c604812ee
commit 419af7bfea

View File

@ -55,15 +55,16 @@ func mapToString(m map[string]Functor) string {
func (dc *dataCursor) String() string {
return "$()"
/* var sb strings.Builder
sb.WriteString(fmt.Sprintf(`$(
index: %d,
ds: %s,
ctx: `, dc.index, mapToString(dc.ds)))
CtxToBuilder(&sb, dc.ctx, 1)
sb.WriteByte(')')
return sb.String()
*/
/*
var sb strings.Builder
sb.WriteString(fmt.Sprintf(`$(
index: %d,
ds: %s,
ctx: `, dc.index, mapToString(dc.ds)))
CtxToBuilder(&sb, dc.ctx, 1)
sb.WriteByte(')')
return sb.String()
*/
}
func (dc *dataCursor) HasOperation(name string) (exists bool) {
@ -75,9 +76,9 @@ func (dc *dataCursor) HasOperation(name string) (exists bool) {
func (dc *dataCursor) CallOperation(name string, args []any) (value any, err error) {
if functor, ok := dc.ds[name]; ok && isFunctor(functor) {
if functor == dc.cleanFunc {
return nil, dc.Clean()
return dc.Clean()
} else if functor == dc.resetFunc {
return nil, dc.Reset()
return dc.Reset()
} else {
ctx := cloneContext(dc.ctx)
value, err = functor.Invoke(ctx, name, []any{})
@ -90,7 +91,7 @@ func (dc *dataCursor) CallOperation(name string, args []any) (value any, err err
return
}
func (dc *dataCursor) Reset() (err error) {
func (dc *dataCursor) Reset() (success bool, err error) {
if dc.resetFunc != nil {
if dc.resource != nil {
ctx := cloneContext(dc.ctx)
@ -104,10 +105,11 @@ func (dc *dataCursor) Reset() (err error) {
} else {
err = errNoOperation(resetName)
}
success = err == nil
return
}
func (dc *dataCursor) Clean() (err error) {
func (dc *dataCursor) Clean() (success bool, err error) {
if dc.cleanFunc != nil {
if dc.resource != nil {
ctx := cloneContext(dc.ctx)
@ -120,6 +122,7 @@ func (dc *dataCursor) Clean() (err error) {
} else {
err = errors.New("no 'clean' function defined in the data-source")
}
success = err == nil
return
}