def create(self): """Creates new database""" f = self.file head = util.read_meta(f,"hDatabases") #Generate ID ID = util.read_meta(f,"cDatabases")+1 util.write_meta(f,"cDatabases",ID) db = self.find_last() bdata = struct.pack("=I32sQQ",ID,self.name,db.addr,0) f.seek(0,2) self.addr = f.tell() #Write data f.write(bdata) #Bind tail util.write_meta(f,"tDatabases",self.addr) #Bind previous node db.next = self.addr f.seek(db.addr+44) bdata = struct.pack("=I",db.next) f.write(bdata) return Result(0,"Database created")
def init(self): """ Initialization 1. Create file 2. Write all meta with defaults 3. Write credentials """ if os.path.isfile(self.file_name): return Result(3,"Initialization is already done") self.file = open(self.file_name,"wb") self.file.close() self.file = open(self.file_name,"rb+") f = self.file #Write meta for key,value in self.meta.iteritems(): util.write_meta(f,key,value[3]) #Write default database db = Database(f,"_default") db.prev = self.meta["hDatabases"][1] db.id = 0 db.next = 0 bdata = struct.pack("=I32sQQ",db.id, db.name, db.prev, db.next) f.seek(0,2) db.addr = f.tell() f.write(bdata) #Write head and tail util.write_meta(f,"hDatabases",db.addr) util.write_meta(f,"tDatabases",db.addr) f.flush() return Result(0,"Initialization has beend done")
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")