Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def pre_hook(self, command, command_name, args, completer):
"""
Before execute command, patch completers first.
Eg: When user run `GET foo`, key completer need to
touch foo.
Only works when compile-grammar thread is done.
"""
# TRANSATION state chage
if command_name.upper() in ["EXEC", "DISCARD"]:
logger.debug(f"[After hook] Command is {command_name}, unset transaction.")
config.transaction = False
# score display for sorted set
if command_name.upper() in ["ZSCAN", "ZPOPMAX", "ZPOPMIN"]:
config.withscores = True
# patch completers
if not completer:
logger.warning("[Pre patch completer] Complter not ready, not patched...")
return
redis_grammar = completer.compiled_grammar
m = redis_grammar.match(command)
if not m:
# invalide command!
return
variables = m.variables()
# zset withscores
withscores = variables.get("withscores")
rprompt=lambda: "" if config.transaction else None,
)
def render_response(self, response, completer, command_name, **options):
"Parses a response from the Redis server"
logger.info(f"[Redis-Server] Response: {response}")
# if in transaction, use queue render first
if config.transaction:
callback = renders.render_transaction_queue
rendered = callback(response, completer)
else:
rendered = self.render_command_result(command_name, response, completer)
return rendered
def after_hook(self, command, command_name, args, completer):
# === After hook ===
# SELECT db on AUTH
if command_name.upper() == "AUTH" and self.db:
select_result = self.execute_command_and_read_response(
completer, "SELECT", self.db
)
if nativestr(select_result) != "OK":
raise ConnectionError("Invalid Database")
elif command_name.upper() == "SELECT":
logger.debug("[After hook] Command is SELECT, change self.db.")
self.db = int(args[0])
if command_name.upper() == "MULTI":
logger.debug("[After hook] Command is MULTI, start transaction.")
config.transaction = True