github.com/mailru/activerecord@v1.12.2/pkg/octopus/call.go (about)

     1  package octopus
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/pkg/errors"
     7  )
     8  
     9  // CallLua - функция для вызова lua процедур. В будущем надо будет сделать возможность декларативно описывать процедуры в модели
    10  // и в сгенерированном коде вызывать эту функцию.
    11  // Так же надо будет сделать возможность описывать формат для результата в произвольной форме, а не в форме тупла для мочёдели.
    12  func CallLua(ctx context.Context, connection *Connection, name string, args ...string) ([]TupleData, error) {
    13  	w := PackLua(name, args...)
    14  
    15  	resp, err := connection.Call(ctx, RequestTypeCall, w)
    16  	if err != nil {
    17  		return []TupleData{}, errors.Wrap(err, "error call lua")
    18  	}
    19  
    20  	tuple, err := ProcessResp(resp, 0)
    21  	if err != nil {
    22  		return []TupleData{}, errors.Wrap(err, "error unpack lua response")
    23  	}
    24  
    25  	return tuple, nil
    26  }