summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakefeasel <jfeasel@gmail.com>2015-05-02 15:20:47 -0700
committerjakefeasel <jfeasel@gmail.com>2015-05-02 15:20:47 -0700
commiteae94d281b27dae3175983fc56d1139e2623e976 (patch)
tree233e9b13cef482b7a601aaa4cb2855cd5b1a7a6e
parent27926aac07e8cd7443a727f34ec9c8b83f9d5df5 (diff)
downloadsqlfiddle2-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.json5
-rw-r--r--src/main/resources/conf/sync.json6
-rw-r--r--src/main/resources/db/sqlfiddle/schema.sql7
-rw-r--r--src/main/resources/tools/fiddles/SearchScript.groovy7
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(),