Files
igncore/core/command_alias_service.py

49 lines
1.5 KiB
Python

from core.decorators import instance
from core.logger import Logger
@instance()
class CommandAliasService:
def __init__(self):
self.logger = Logger(__name__)
def inject(self, registry):
self.db = registry.get_instance("db")
def check_for_alias(self, command_str):
row = self.get_alias(command_str)
if row and row.enabled:
return row.command
else:
return None
def get_alias(self, alias):
return self.db.query_single("SELECT alias, command, enabled FROM command_alias WHERE alias = ?", [alias])
def add_alias(self, alias, command, force_enable=False):
"""Call during start"""
row = self.get_alias(alias)
if row:
if row.enabled:
return False
elif force_enable:
self.db.exec("UPDATE command_alias SET command = ?, enabled = 1 WHERE alias = ?", [command, alias])
return True
else:
self.db.exec("INSERT INTO command_alias (alias, command, enabled) VALUES (?, ?, 1)", [alias, command])
return True
def remove_alias(self, alias):
row = self.get_alias(alias)
if row:
if row.enabled:
self.db.exec("UPDATE command_alias SET enabled = 0 WHERE alias = ?", [alias])
return True
else:
return False
else:
return False
def get_enabled_aliases(self):
return self.db.query("SELECT alias, command FROM command_alias WHERE enabled = 1 ORDER BY alias")