@@ -38,6 +38,9 @@ def new_config(debug=False, prefix=default_prefix):
3838 return config
3939
4040def create (journaltag , create = True , debug = False , prefix = default_prefix ):
41+ # "Nuke" in-memory db
42+ db_nuke ('' )
43+
4144 db = Database (new_config (debug ), journaltag )
4245
4346 # load standard schema
@@ -214,12 +217,12 @@ class Database(back_anydbm.Database):
214217
215218 dbtype = "memorydb"
216219
220+ # Make it a little more persistent across re-open
221+ memdb = {}
222+
217223 def __init__ (self , config , journaltag = None ):
218224 self .config , self .journaltag = config , journaltag
219225 self .classes = {}
220- self .items = {}
221- self .ids = {}
222- self .journals = {}
223226 self .files = {}
224227 self .tx_files = {}
225228 self .security = security .Security (self )
@@ -236,6 +239,10 @@ def __init__(self, config, journaltag=None):
236239 self .destroyednodes = {}# keep track of the destroyed nodes by class
237240 self .transactions = []
238241 self .tx_Source = None
242+ # persistence across re-open
243+ self .items = self .__class__ .memdb .get ('items' , {})
244+ self .ids = self .__class__ .memdb .get ('ids' , {})
245+ self .journals = self .__class__ .memdb .get ('journals' , {})
239246
240247 def filename (self , classname , nodeid , property = None , create = 0 ):
241248 shutil .copyfile (__file__ , __file__ + '.dummy' )
@@ -290,6 +297,10 @@ def close(self):
290297 # kill the schema too
291298 self .classes = {}
292299 # just keep the .items
300+ # persistence across re-open
301+ self .__class__ .memdb ['items' ] = self .items
302+ self .__class__ .memdb ['ids' ] = self .ids
303+ self .__class__ .memdb ['journals' ] = self .journals
293304
294305 #
295306 # Classes
@@ -472,4 +483,13 @@ def __init__(self, db, classname, **properties):
472483 properties ['superseder' ] = hyperdb .Multilink (classname )
473484 Class .__init__ (self , db , classname , ** properties )
474485
486+ # Methods to check for existence and nuke the db
487+ # We don't support multiple named databases
488+
489+ def db_exists (name ):
490+ return bool (Database .memdb )
491+
492+ def db_nuke (name ):
493+ Database .memdb = {}
494+
475495# vim: set et sts=4 sw=4 :
0 commit comments