-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathotm_test.py
54 lines (41 loc) · 1.42 KB
/
otm_test.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
from scdb import Database, Table, StringField, IntegerField, ForeignKeyField, ManyToManyField, RelationType
class User(Table):
id = IntegerField(primary_key=True, unique=True)
username = StringField(max_length=100)
def __str__(self):
return f"User <id: {self.id}, username: {self.username}>"
class Group(Table):
id = IntegerField(primary_key=True, unique=False)
host = ForeignKeyField(to=User)
name = StringField()
members = ManyToManyField(to=User)
def __str__(self):
return f"Group <id: {self.id}, name: {self.name}, host: {self.host}>"
db = Database()
db.add_table(User)
db.add_table(Group)
user1 = User(id=1, username="room owner")
user2 = User(id=2, username="generic user 2")
user3 = User(id=3, username="generic user 3")
db.add_records("User", [user1, user2, user3])
groupchat = Group(
id=1,
host=user1,
name="the group chat",
members=[user1, user2, user3]
)
db.add_record("Group", groupchat)
tbl = db.get("Group", id=1)
print(tbl.id)
print(tbl.host) # returns pk id
print(tbl.name)
print(tbl.members) # returns pk id's
db.save_to_file("testdata/otm.scdb", "bin")
db.save_to_file("testdata/otm.scsl", "scsl")
db.save_to_file("testdata/otm.json", "json")
print("\nReloading\n")
new_db = Database.load_from_file("testdata/otm.scdb")
loaded_tbl = new_db.get("Group", id=1)
print(loaded_tbl)
print(new_db.get("User", id=1))
new_db.run_admin_panel(save_path="testdata/otm.scdb")