-
Notifications
You must be signed in to change notification settings - Fork 0
/
shortcuts.py
87 lines (70 loc) · 3.25 KB
/
shortcuts.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# shortcuts.py : Converts Shortcuts into valid SQL Code.
# Even Shortcut returns a tuple.
# (nes, query, s_ack, bulk)
from auto_insert import auto_insert, set_locale
class ShortcutProcessor:
def __init__(self):
self.table = None
@staticmethod
def check_shortcuts(squery):
if squery.startswith('!'):
return True
else:
return False
def process_shortcuts(self, squery):
squery = squery.replace(';', '')
squery = squery.strip()
if squery.startswith('!t'):
squery = list(squery.split(' '))
if len(squery) < 2:
raise Exception('Expected a table name.')
self.table = squery[1]
return (True, '', f'Set Shortcut Table to {self.table}', False)
elif squery.startswith('!sh'):
squery = list(squery.split(' '))
if len(squery) == 1:
return (False, 'SHOW TABLES;', None, False)
elif len(squery) == 2:
if squery[1].lower() == 'd':
return (False, 'SHOW DATABASES;', None, False)
elif squery[1].lower() == 't':
return (False, 'SHOW TABLES;', None, False)
else:
raise Exception('Invalid Argument for show shortcut')
elif squery.startswith('!s'):
squery = list(squery.split(' '))
if len(squery) == 1:
return (False, f'SELECT * FROM {self.table};', None, False)
elif len(squery) == 2:
return (False, f'SELECT {squery[1]} FROM {self.table};', None, False)
elif len(squery) == 3:
return (False, f'SELECT {squery[1]} FROM {squery[2]};', None, False)
elif squery.startswith('!d'):
squery = list(squery.split(' '))
if len(squery) == 1:
return (False, f'DESC {self.table}', None, False)
elif len(squery) == 2:
return (False, f'DESC {squery[1]}', None, False)
elif squery.startswith('!ai'):
squery = list(squery.split(' '))
queries = auto_insert(squery, self.table)
return (True, queries, f'Executed {len(queries)} Auto Insert Queries', True)
elif squery.startswith('!i'):
squery = list(squery.split(' '))
if len(squery) == 1:
raise Exception('Insufficient Arguments. Expected more arguments for insert shortcut.')
elif len(squery) == 2:
return (False, f'INSERT INTO {self.table} Values({squery[1]});', None, False)
elif len(squery) == 3:
return (False, f'INSERT INTO {self.table}({squery[2]}) Values({squery[1]});', None, False)
elif len(squery) == 4:
return (False, f'INSERT INTO {squery[3]}({squery[2]}) Values({squery[1]});', None, False)
elif squery.startswith('!l'):
squery = list(squery.split(' '))
if len(squery) < 2:
raise Exception('Expected a locale name.')
locale = squery[1]
set_locale(locale)
return (True, '', f'Set Shortcut locale to {locale}', False)
else:
raise Exception('Invalid Shortcut, please try again.')