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