diff options
author | jakefeasel <jfeasel@gmail.com> | 2013-12-28 18:54:13 +0000 |
---|---|---|
committer | jakefeasel <jfeasel@gmail.com> | 2013-12-28 18:54:13 +0000 |
commit | 6f716806b4fec0afb05090210a0aca2586f70160 (patch) | |
tree | bd8b7bc593dfad721408d04b5c1d8fff4fe693b5 | |
parent | 7332c0447efd9a156ffcb351b2ef3e9ca083abe0 (diff) | |
download | sqlfiddle-6f716806b4fec0afb05090210a0aca2586f70160.zip sqlfiddle-6f716806b4fec0afb05090210a0aca2586f70160.tar.gz sqlfiddle-6f716806b4fec0afb05090210a0aca2586f70160.tar.bz2 |
new cleanup function in the Tasks controller
-rw-r--r-- | src/main/webapp/controllers/Tasks.cfc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/main/webapp/controllers/Tasks.cfc b/src/main/webapp/controllers/Tasks.cfc index 8eff7da..16fa257 100644 --- a/src/main/webapp/controllers/Tasks.cfc +++ b/src/main/webapp/controllers/Tasks.cfc @@ -48,5 +48,52 @@ </cfscript> </cffunction> + <cffunction name="cleanDatabases"> + <cfscript> + var loc = {}; + loc.list_database_scripts = model("DB_Type").findAll(where="context='host' AND id = 9", include="Hosts", returnAs="objects", order="full_name"); + </cfscript> + <cfloop from="1" to="#ArrayLen(loc.list_database_scripts)#" index="loc.i"> + <cfloop from="1" to="#ArrayLen(loc.list_database_scripts[loc.i].hosts)#" index="loc.j"> + <cfquery datasource="#loc.list_database_scripts[loc.i].hosts[loc.j].cf_dsn#" name="loc.databases"> + #preserveSingleQuotes("#loc.list_database_scripts[loc.i].list_database_script#")# + </cfquery> + <cfdump var="#loc.databases#"> + <cfloop query="loc.databases"> + <cfscript> + if (StructKeyExists(loc.databases, "schema_name")) { + loc.schema_name = loc.databases.schema_name; + } else { + loc.schema_name = loc.databases.database; // some versions of mysql are different + } + </cfscript> + <cfscript> + loc.databaseMatches = reFindNoCase("^db_(\d+)_([a-z0-9]+)$", loc.schema_name, 0, true); + if (ArrayLen(loc.databaseMatches.len) IS 3) { + loc.db_type_id = mid(loc.schema_name, loc.databaseMatches.pos[2], loc.databaseMatches.len[2]); + loc.short_code = mid(loc.schema_name, loc.databaseMatches.pos[3], loc.databaseMatches.len[3]); + loc.active_database = model("Schema_Def").findOne(where="current_host_id IS NOT NULL AND db_type_id = #loc.db_type_id# AND short_code = '#LCase(loc.short_code)#'", returnAs="object", select="db_type_id,short_code,current_host_id,id"); + + if (IsObject(loc.active_database) IS false) { + try { + writeDump(var="Dropping Database #loc.short_code#", abort=true); + loc.list_database_scripts[loc.i].hosts[loc.j].dropDatabase(loc.short_code); + writeDump("Database #loc.short_code# dropped"); + + } catch (any e) { + + writeDump(e); + } + } + + } + </cfscript> + </cfloop> + </cfloop> + </cfloop> + <cfdump var="Done dropping all" abort=true> + <cfabort> + </cffunction> + </cfcomponent> |