func mutateDeleteNode(ctx context.Context, n *node.Node, p *node.Node, b *node.Node) error { *b = *n.Backup() if p == nil { return nil } switch p.Type.NativeJsonType(ctx) { case system.J_MAP: if err := p.DeleteMapChild(n.Key); err != nil { return kerr.Wrap("BUUOWYSJNG", err) } case system.J_ARRAY: if err := p.DeleteArrayChild(n.Index); err != nil { return kerr.Wrap("RWFQSINACH", err) } case system.J_OBJECT: if err := p.DeleteObjectChild(ctx, n.Key); err != nil { return kerr.Wrap("XGVEXEOBUP", err) } } return nil }