diff options
author | jakefeasel <jfeasel@gmail.com> | 2015-05-02 15:20:47 -0700 |
---|---|---|
committer | jakefeasel <jfeasel@gmail.com> | 2015-05-02 15:20:47 -0700 |
commit | eae94d281b27dae3175983fc56d1139e2623e976 (patch) | |
tree | 233e9b13cef482b7a601aaa4cb2855cd5b1a7a6e | |
parent | 27926aac07e8cd7443a727f34ec9c8b83f9d5df5 (diff) | |
download | sqlfiddle2-eae94d281b27dae3175983fc56d1139e2623e976.zip sqlfiddle2-eae94d281b27dae3175983fc56d1139e2623e976.tar.gz sqlfiddle2-eae94d281b27dae3175983fc56d1139e2623e976.tar.bz2 |
Adding flag for schemas which should not be deprovisioned, particularly helpful for larger samples with well-known names
-rw-r--r-- | src/main/resources/conf/provisioner.openicf-fiddles.json | 5 | ||||
-rw-r--r-- | src/main/resources/conf/sync.json | 6 | ||||
-rw-r--r-- | src/main/resources/db/sqlfiddle/schema.sql | 7 | ||||
-rw-r--r-- | src/main/resources/tools/fiddles/SearchScript.groovy | 7 |
4 files changed, 19 insertions, 6 deletions
diff --git a/src/main/resources/conf/provisioner.openicf-fiddles.json b/src/main/resources/conf/provisioner.openicf-fiddles.json index d4d7966..f8bc529 100644 --- a/src/main/resources/conf/provisioner.openicf-fiddles.json +++ b/src/main/resources/conf/provisioner.openicf-fiddles.json @@ -430,6 +430,11 @@ "nativeName" : "statement_separator", "nativeType" : "string" }, + "deprovision" : { + "type" : "boolean", + "nativeName" : "deprovision", + "nativeType" : "boolean" + }, "structure" : { "type": "array", "nativeName" : "structure", diff --git a/src/main/resources/conf/sync.json b/src/main/resources/conf/sync.json index 8f7c927..6b2319b 100644 --- a/src/main/resources/conf/sync.json +++ b/src/main/resources/conf/sync.json @@ -5,16 +5,16 @@ "source" : "system/fiddles/schema_defs", "target" : "system/hosts/databases", "sourceQuery" : { - "queryFilter" : "context eq \"host\" and minutes_since_last_used lt 30" + "queryFilter" : "context eq \"host\" and (minutes_since_last_used lt 30 or deprovision eq \"false\")" }, "allowEmptySourceSet" : true, "validSource" : { "type" : "text/javascript", - "source" : "source.minutes_since_last_used < 30" + "source" : "source.minutes_since_last_used < 30 || !source.deprovision" }, "correlationQuery" : { "type" : "text/javascript", - "source" : "var qry = { '_queryFilter': 'schema_name eq \"db_' + source.db_type_id + '_' + source.short_code + '\"'}; qry;" + "source" : "({ '_queryFilter': 'schema_name eq \"db_' + source.db_type_id + '_' + source.short_code + '\"'})" }, "properties" : [ { diff --git a/src/main/resources/db/sqlfiddle/schema.sql b/src/main/resources/db/sqlfiddle/schema.sql index d6952db..c0445d0 100644 --- a/src/main/resources/db/sqlfiddle/schema.sql +++ b/src/main/resources/db/sqlfiddle/schema.sql @@ -177,7 +177,8 @@ CREATE TABLE schema_defs ( md5 character varying(32), statement_separator character varying(5) DEFAULT ';'::character varying, owner_id integer, - structure_json text + structure_json text, + deprovision smallint default 1 ); @@ -408,6 +409,10 @@ CREATE INDEX schema_last_used ON schema_defs USING btree (last_used); CREATE UNIQUE INDEX schema_short_codes ON schema_defs USING btree (short_code, db_type_id); +CREATE INDEX schema_defs_deprovision ON schema_defs (short_code, db_type_id) +WHERE deprovision = 0; + + -- -- Name: user_fiddles_user_id; Type: INDEX; Schema: public; Owner: postgres; Tablespace: -- diff --git a/src/main/resources/tools/fiddles/SearchScript.groovy b/src/main/resources/tools/fiddles/SearchScript.groovy index 1b4663f..0837350 100644 --- a/src/main/resources/tools/fiddles/SearchScript.groovy +++ b/src/main/resources/tools/fiddles/SearchScript.groovy @@ -51,7 +51,8 @@ def fieldMap = [ "__UID__": "s.db_type_id = ? AND s.short_code = ?", "schema_def_id": "s.id", "db_type_id": "s.db_type_id", - "minutes_since_last_used": "last_used" + "minutes_since_last_used": "last_used", + "deprovision": "s.deprovision = (case when 'true' = ? then 1 else 0 end)" ], "queries": [ "__NAME__": "q.md5", @@ -136,7 +137,7 @@ queryParser = { queryObj -> int rightSide = queryObj.get("right").toInteger() return fieldMap[objectClass.objectClassValue][queryObj.get("left")] + " >= (current_timestamp - interval '${rightSide} minutes')" - } else if (queryObj.get("left") == "favorite") { + } else if (queryObj.get("left") == "favorite" || queryObj.get("left") == "deprovision") { whereParams.push(queryObj.get("right").toString()) return fieldMap[objectClass.objectClassValue][queryObj.get("left")] } else { @@ -360,6 +361,7 @@ switch ( objectClass.objectClassValue ) { s.ddl, s.statement_separator, s.structure_json, + s.deprovision, d.simple_name, d.full_name, d.context, @@ -391,6 +393,7 @@ switch ( objectClass.objectClassValue ) { attribute 'minutes_since_last_used', (row.minutes_since_last_used != null ? row.minutes_since_last_used.toInteger(): null) attribute 'short_code', row.short_code attribute 'statement_separator', row.statement_separator + attribute 'deprovision', row.deprovision attribute 'num_hosts_available', row.num_hosts_available.toInteger() attribute 'db_type', [ id : row.db_type_id.toInteger(), |