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
|
import sqlite3
class StatusType():
def __init__(self, id, name):
self.id = id
self.name = name
def __str__(self):
return self.name
class ErrorType(StatusType):
pass
class Status():
def __init__(self, id: int, typeof: StatusType, description: str):
self.id = id
self.typeof = typeof
self.description = description
def __str__(self):
return self.description
class Error(Status):
pass
class Database():
def __init__(self, filename: str):
self.db = sqlite3.connect(filename)
self.db.row_factory = sqlite3.Row
self.statusTypes = dict()
self.statuses = dict()
self.errorTypes = dict()
self.errors = dict()
self.load_types()
self.load_statuses()
def load_types(self):
targets = {
"xas_status_type": self.statusTypes,
"xas_error_type": self.errorTypes
}
for table in targets.keys():
target = targets[table]
cr = self.db.cursor()
cr.execute(f"select id, name from {table}")
for row in cr.fetchall():
target[row['id']] = row['name']
def status_type(self, id: int):
return self.statusTypes[id]
def error_type(self, id: int):
return self.errorTypes[id]
def load_statuses(self):
targets = {
"xas_status": (Status, self.statuses),
"xas_error": (Error, self.errors)
}
for table in targets.keys():
typeof = targets[table][0]
target = targets[table][1]
cr = self.db.cursor()
cr.execute(f"select id, type_id, description from {table}")
for row in cr.fetchall():
obj = typeof(row['id'], row['type_id'], row['description'])
target[obj.id] = obj
def status(self, id):
return self.statuses[id]
def error(self, id):
return self.errors[id]
|