Forráskód Böngészése

如果突然没了动力一定是饿到了罢

NandHyf 1 éve
szülő
commit
2112dde9df
3 módosított fájl, 62 hozzáadás és 82 törlés
  1. 1 1
      Controller.py
  2. 3 1
      Stateful.py
  3. 58 80
      sqlite.py

+ 1 - 1
Controller.py

@@ -67,7 +67,7 @@ class Client():
         # ↑↑↑ test code here ↑↑↑
 
         # 2. Normalized Start Process
-        startState = Stateful.PackHandler(['/', dbPath, dbType])
+        startState = Stateful.Handler(['/', dbPath, dbType])
         print(startState)
         Client.TransitCommand()
 

+ 3 - 1
Stateful.py

@@ -107,11 +107,13 @@ def Operate_sqlite3(dbPath, match_commands):
 
 
 # ----- Transit Command Handler -----
-def PackHandler(app_commands):
+def Handler(app_commands):
     dbType = app_commands[-1]
     dbPath = app_commands[-2]
 
     if dbType == "sqlite3":
+        # IsExist()
+        # Operated_sqlite3()
         return Operate_sqlite3(dbPath, app_commands)
 
     elif dbType == "csv":

+ 58 - 80
sqlite.py

@@ -5,97 +5,75 @@ deType = "sqlite3"
 dbPath = "dev.db"
 
 
-def is_exist(tableName, columnName):
-    pass
-
-
-# [todo 3]
-def Secondary_response():
-    pass
-
-
-def Operate_sqlite3(dbPath, commands):
-    # Commands e.g.
-    #    0       1       2      3      4      5     6
-    # [add]
-    # ['add', 'board', '<KB>']
-    # ['add', 'class', '<CL>', 'to', '<KB>']
-    # ['add', 'event', '<EV>', 'to', '<KB>', '/', '<CL>'] <- 这个应该报错
-    # ['add', 'event', '<EV>', 'to', '<KB>/<CL>']
-
-    # [edit]
-    # ['edit', 'board', '<KB>', 'to', '<KB>']
-    # ['edit', 'class', '<KB>', 'to', '<KB>']
-    # ['edit', 'class', '<CL>', 'to', '<CL>']
-    # ['edit', 'class', '<CL>', 'to', '<CL>']
-    # ['edit', 'event', '<EV>', 'to', '<EV>']
-    # ['edit', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
-    # ['edit', 'event', '<EV>', 'in', '<KB>/<CL>']
-
-    # [delete]
-    # ['delete', 'board', '<KB>']
-    # ['delete', 'class', '<CL>']
-    # ['delete', 'event', '<EV>']
-    # ['delete', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
-    # ['delete', 'event', '<EV>', 'in', '<KB>/<CL>']
-
-    # [move]
-    # ['move', 'class', '<CL>', 'to', '<KB>']
-    # ['move', 'event', '<EV>', 'to', '<KB>']
-    # ['move', 'event', '<EV>', 'to', '<CL>']
-    # ['move', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
-    # ['move', 'event', '<EV>', 'in', '<KB>/<CL>']
-
-    # [select]
-    # ['select', 'board', '<KB>']
-    # ['select', 'class', '<CL>']
-    # ['select', 'event', '<EV>']
-    # ['select', 'event', '<EV>', 'in', '<KB>', '/', '<CL>'] <- 这个应该报错
-    # ['select', 'event', '<EV>', 'in', '<KB>/<CL>']
-
-    # [..]
-
-    # [/]
+# [todo 1]
+# 1. 检查commands[5]是否为dbPath, 不是话报错(syntax error)
+# ↑↑↑ 但是总感觉输入检查应该放在Controller里面(也就是放在前端去检查)...
+# 前端检查语法, 冲突代回到后端去检查, 然后顺便就执行了
+# 2. 命令里面的<KB>, <CL>, <EV>都代入检查是否存在, 区分add/edit(INSERT INTO/UPDATE)
+# 3. 匹配SQL关键字
+# 4. 拼完以后进行to和in的判断
+# 5. 按正确的顺序拼SQL语句
+# 6. 执行
+
+
+class Op_sqlite3():
+    def __init__(self, commands) -> None:
+        self.dbPath = dbPath
+        self.commands = commands
+        self.tableName = str(commands[1]).capitalize()
+        self.columnName = str(commands[2])
+        # "to" condition need a "if"
+        self.ItemName = str(commands[])
     
-    # [todo 1]
-    # 1. 检查commands[5]是否为dbPath, 不是话报错(syntax error)
-    # ↑↑↑ 但是总感觉输入检查应该放在Controller里面(也就是放在前端去检查)...
-    # 前端检查语法, 冲突代回到后端去检查, 然后顺便就执行了
-    # 2. 命令里面的<KB>, <CL>, <EV>都代入检查是否存在, 区分add/edit(INSERT INTO/UPDATE)
-    # 3. 匹配SQL关键字
-    # 4. 拼完以后进行to和in的判断
-    # 5. 按正确的顺序拼SQL语句
-    # 6. 执行
-
-    v = "SELECT * FROM {tableName} WHERE name={name}".format(tableName=str(commands[1]).capitalize(), name="'"+commands[2]+"'")
-    
-    con = sqlite3.connect(dbPath)
-    cur = con.cursor()
-    # 1. exist check
-    try:
-        res = cur.execute(v)
+
+    def Exec(self):
+        con = sqlite3.connect(dbPath)
+        cur = con.cursor()
+
+        cur.execute(self.commands)
         con.commit()
-        print("res: ", res.fetchone() is None)
+        re = cur.fetchall()
+        con.close()
+
+        return re
+        
 
-        # syntax right but not exist:
-        if res.fetchone() is None == True:
-            print("err <Code>: could not found, creat? y/n")
+    def IsExist(self, returnBool=True):
+        sqls = "SELECT {coumn} FROM {table} WHERE name='{name}'".format(column=self.columnName, table=self.tableName, name=self.ItemName)
+        ie = Op_sqlite3.Exec(sqls)
 
-            # Secondary_response()
+        if ie != None and returnBool == False:
+            return ie
+        
+        elif ie != None and returnBool == True:
+            return True
 
-        # 2. exec command
-        matched = Stateful.MatchTomlKeys('dev_config.toml', commands, 'sqlite3')
-        print(matched)
+        elif ie == None:
+            return False
+        
+        else:
+            print("unexpected processing error")
 
 
-    except:
-        print("err <Code>: Syntax error")
+    def Secondary_response(self):
+        pass
 
-    con.close()
+    # Regular Start
+    def Regular(self):
+        try:
+            ie = Op_sqlite3.IsExist()
+
+            if ie != None:
+                Op_sqlite3.Exec(dbPath, sy_i)
+
+        except:
+            print("not exist")
 
 
 if __name__ == "__main__":
 
     while(1):
         sy_i = input("sql: ").split(" ")
-        Operate_sqlite3(dbPath, sy_i)
+        Op_sqlite3.Regular(dbPath, sy_i)
+
+