Stateful.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. import Alt
  2. import tomlkit, sqlite3
  3. # uid related
  4. # ----- Toml Methods -----
  5. def GetTomlDoc(tomlName):
  6. try:
  7. with open(tomlName, "rb") as t:
  8. doc = tomlkit.load(t)
  9. if doc == {}:
  10. input("error 0: could not found correct config file")
  11. exit()
  12. return doc
  13. except:
  14. input("error 0: could not found correct config file")
  15. exit()
  16. def MatchTomlKey(tomlName, key, table=None) -> str:
  17. doc = GetTomlDoc(tomlName)
  18. if table == None:
  19. return str(doc.item(key))
  20. elif table != None:
  21. d = doc.unwrap()
  22. return str(d[table][key])
  23. # no differernt between ↑ MatchTomlKey() ↑ except receives and returns in list
  24. def MatchTomlKeys(tomlName, keys, table=None) -> list:
  25. doc = GetTomlDoc(tomlName)
  26. if table == None:
  27. # rl == 'r'eturn 'l'ist
  28. rl = []
  29. for key in keys:
  30. try:
  31. rl.append(doc.item(key))
  32. except:
  33. pass
  34. return rl
  35. elif table != None:
  36. rl = []
  37. d = doc.unwrap()
  38. for key in keys:
  39. try:
  40. rl.append(d[table][key])
  41. except:
  42. pass
  43. return rl
  44. # ----- Sqlite Methods -----
  45. def Exec_one(dbPath, commands):
  46. con = sqlite3.connect(dbPath)
  47. cur = con.cursor()
  48. cur.execute(commands)
  49. con.commit()
  50. re = cur.fetchall()
  51. con.close()
  52. return re
  53. def IsExist(exec_commands, returnBool=True):
  54. tableName = str(exec_commands[1]).capitalize()
  55. ItemName = str(exec_commands[2])
  56. sqls = "SELECT name FROM {table} WHERE name='{name}'".format(table=tableName, name=ItemName)
  57. ie = Exec_one(dbPath, sqls)
  58. if ie != [] and returnBool == False:
  59. return ie
  60. elif ie != [] and returnBool == True:
  61. return True
  62. elif ie == []:
  63. return False
  64. else:
  65. # Alt.Err(errCode)
  66. print("err <Code>: unexpected error in existence check")
  67. class command():
  68. def __init__(self, dbPath, tableName, columnName, newColumnName) -> None:
  69. self.dp = dbPath
  70. self.table = tableName
  71. self.name = columnName
  72. self.newName = newColumnName
  73. def select(self, aliveOnly=True):
  74. if aliveOnly == True:
  75. sqls = "SELECT name FROM {table} WHERE name='{name}' AND status='alive';".format(table=self.table, name=self.name)
  76. elif aliveOnly == False:
  77. sqls = "SELECT name FROM {table} WHERE name='{name}';".format(table=self.table, name=self.name)
  78. res = Exec_one(self.dp, sqls)
  79. # 也许需要一个后处理res = [('a'),('b')]这样的格式问题
  80. return res
  81. def add(self, values, addObj="board", addType="new"):
  82. # insert
  83. # add board: insert into Board
  84. # add class(className, usingBoard):
  85. # add event(className)
  86. pass
  87. def delete(self):
  88. sqls = "UPDATE {table} SET status='deleted' WHERE name='{name}';".format(table=self.table, name=self.name)
  89. res = Exec_one(self.dp, sqls)
  90. def edit(self):
  91. # edit boardName
  92. # edit className
  93. # edit eventName
  94. # edit event dscrp
  95. # edit event blabla
  96. pass
  97. def move(self, moveObj):
  98. if moveObj == "KB":
  99. pass
  100. elif moveObj == "CL":
  101. pass
  102. elif moveObj == "EV":
  103. pass
  104. def backPrevious(self):
  105. pass
  106. def backHome(self):
  107. sqls = "SELECT name FROM sqlite_master WHERE type='table' AND name is NOT 'sqlite_sequence';"
  108. Exec_one(dbPath, sqls)
  109. def back(self, ):
  110. pass
  111. class objBoard():
  112. pass
  113. class objClass():
  114. pass
  115. class objEvent():
  116. pass
  117. def Handler():
  118. pass
  119. if __name__ == "__main__":
  120. dbPath = "dev.db"