-
Notifications
You must be signed in to change notification settings - Fork 0
/
dbms.py
85 lines (64 loc) · 1.54 KB
/
dbms.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
import os
import struct
import fx
import settings
import models
import util
from models import Result
"""
Type, Offset, Length,Format
"""
def create_db(db_name):
db_name = db_name.strip()
if " " in db_name:
return Result(5,"Syntax error")
db = models.Database(db_name)
if db.exists():
return Result(4,"Database exists")
else:
db.create()
return Result(0,"Database has been created")
def init():
"""
Initialization
1. Create file
2. Write all meta with zero
3. Write credentials
"""
if os.path.isfile("data.db"):
return Result(3,"Initialization is already done")
f = open("data.db","wb")
name = settings.credentials["name"]
fx.set_name(f,name)
version_a = settings.credeantials["version_a"]
version_b = settings.credeantials["version_b"]
fx.set_version(f,version_a,version_b)
util.write_meta(f,"hDatabases",0)
util.write_meta(f,"hTables",0)
util.write_meta(f,"hColumns",0)
util.write_meta(f,"hKeys",0)
util.write_meta(f,"hSerials",0)
util.write_meta(f,"cDatabases",0)
util.write_meta(f,"cTables",0)
util.write_meta(f,"cKeys",0)
util.write_meta(f,"cSerials",0)
f.close()
return Result(0,"Initialized")
def purge():
try:
os.remove("data.db")
return Result(0,"Purged successfully")
except:
return Result(2,"Something went wrong")
def run_command(cmd):
cmd = cmd.lower().strip()
if cmd == "init":
result = init()
return result
if cmd == "purge":
result = purge()
return result
if "create database" in cmd:
db_name = cmd.replace("create database","")
result = create_db(db_name)
return result