(ctx context.Context, name, payload string, keys []string, args ...interface{})
| 44 | } |
| 45 | |
| 46 | func (c cmdable) eval(ctx context.Context, name, payload string, keys []string, args ...interface{}) *Cmd { |
| 47 | cmdArgs := make([]interface{}, 3+len(keys), 3+len(keys)+len(args)) |
| 48 | cmdArgs[0] = name |
| 49 | cmdArgs[1] = payload |
| 50 | cmdArgs[2] = len(keys) |
| 51 | for i, key := range keys { |
| 52 | cmdArgs[3+i] = key |
| 53 | } |
| 54 | cmdArgs = appendArgs(cmdArgs, args) |
| 55 | cmd := NewCmd(ctx, cmdArgs...) |
| 56 | |
| 57 | // it is possible that only args exist without a key. |
| 58 | // rdb.eval(ctx, eval, script, nil, arg1, arg2) |
| 59 | if len(keys) > 0 { |
| 60 | cmd.SetFirstKeyPos(3) |
| 61 | } |
| 62 | _ = c(ctx, cmd) |
| 63 | if err := cmd.Err(); err != nil { |
| 64 | if HasErrorPrefix(err, "NOSCRIPT") { |
| 65 | cmd.SetErr(ErrNoScript) |
| 66 | } |
| 67 | } |
| 68 | return cmd |
| 69 | } |
| 70 | |
| 71 | func (c cmdable) ScriptExists(ctx context.Context, hashes ...string) *BoolSliceCmd { |
| 72 | args := make([]interface{}, 2+len(hashes)) |
no test coverage detected