Browse Source

added Manager.initialize and Manager.cleanup.

Nicolas Cannasse 19 years ago
parent
commit
68f5a8ed4c
2 changed files with 20 additions and 16 deletions
  1. 18 3
      std/neko/db/Manager.hx
  2. 2 13
      std/neko/db/Transaction.hx

+ 18 - 3
std/neko/db/Manager.hx

@@ -30,8 +30,8 @@ class Manager<T : Object> {
 
 	/* ----------------------------- STATICS ------------------------------ */
 	public static var cnx : Connection = null;
-	public static var init_list : List<Manager<Object>> = new List();
-	public static var object_cache : Hash<Object> = new Hash();
+	private static var object_cache : Hash<Object> = new Hash();
+	private static var init_list : List<Manager<Object>> = new List();
 	private static var cache_field = "__cache__";
 
 	/* ---------------------------- BASIC API ----------------------------- */
@@ -363,7 +363,22 @@ class Manager<T : Object> {
 		return l2;
 	}
 
-	public function __initRelation(r : { prop : String, key : String, manager : Manager<Object> } ) {
+	public static function initialize() {
+		var l = init_list;
+		init_list = new List();
+		for( m in l ) {
+			var rl : Void -> Array<Dynamic> = untyped m.class_proto.RELATIONS;
+			if( rl != null )
+				for( r in rl() )
+					m.initRelation(r);
+		}
+	}
+
+	public static function cleanup() {
+		object_cache = new Hash();
+	}
+
+	function initRelation(r : { prop : String, key : String, manager : Manager<Object> } ) {
 		// setup getter/setter
 		var manager = r.manager;
 		var hprop = r.prop;

+ 2 - 13
std/neko/db/Transaction.hx

@@ -26,17 +26,6 @@ package neko.db;
 
 class Transaction {
 
-	private static function initialize() {
-		var l = Manager.init_list;
-		Manager.init_list = new List();
-		for( m in l ) {
-			var rl : Void -> Array<Dynamic> = untyped m.class_proto.RELATIONS;
-			if( rl != null )
-				for( r in rl() )
-					m.__initRelation(r);
-		}
-	}
-
 	private static function isDeadlock(e) {
 		return false;
 	}
@@ -60,7 +49,7 @@ class Transaction {
 	}
 
 	public static function main( dbparams, dbname, mainFun : Void -> Void, logError : Dynamic -> Void ) {
-		initialize();
+		Manager.initialize();
 		Manager.cnx = Mysql.connect(dbparams);
 		Manager.cnx.selectDB(dbname);
 		Manager.cnx.request("START TRANSACTION");
@@ -68,7 +57,7 @@ class Transaction {
 		Manager.cnx.request("COMMIT");
 		Manager.cnx.close();
 		Manager.cnx = null;
-		Manager.object_cache = new Hash();
+		Manager.cleanup();
 	}
 
 }