rxcms-dbms_plugin 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,101 @@
1
+ $(function(){
2
+
3
+ Messenger.options = {
4
+ extraClasses: 'messenger-fixed messenger-on-bottom messenger-on-right',
5
+ theme: 'air'
6
+ };
7
+
8
+ $("#dbmsTypeSelect").on("change", function(){
9
+ $(".connectorContainer").fadeOut("fast");
10
+ switch($(this).val())
11
+ {
12
+ case "mysql2":
13
+ $("#sql").fadeIn("fast");
14
+ $("#portTxt").val("3306");
15
+ break;
16
+ case "sqlite":
17
+ $("#sqlite").fadeIn("fast");
18
+ break;
19
+ case "postgresql":
20
+ $("#sql").fadeIn("fast");
21
+ $("#portTxt").val("5432");
22
+ break;
23
+ default:
24
+ }
25
+ });
26
+
27
+ $(".sqlProceedBtn").on("click", function(){
28
+
29
+ if ($("#dbmsTypeSelect").val() == "sqlite")
30
+ {
31
+ if ($("#dbTxtSqlite").val().length == 0)
32
+ {
33
+ Messenger().post("Path to database is required");
34
+ return;
35
+ }
36
+ }
37
+ else
38
+ {
39
+ var errors = "";
40
+ if ($("#hostTxt").val().length == 0) errors += "Host is required.<br />"
41
+ if ($("#portTxt").val().length == 0) errors += "Port is required.<br />"
42
+ if ($("#dbTxt").val().length == 0) errors += "Database is required.<br />"
43
+ if ($("#userTxt").val().length == 0) errors += "User is required.<br />"
44
+
45
+ if (errors.length > 0)
46
+ {
47
+ Messenger().post(errors);
48
+ return;
49
+ }
50
+ }
51
+
52
+ $("#sqlProceedBtn").attr("disabled","disabled");
53
+
54
+ $.post("/dbms/connection/make", {
55
+ "type" : $("#dbmsTypeSelect").val(),
56
+ "host" : $("#hostTxt").val(),
57
+ "port" : $("#portTxt").val(),
58
+ "database": $("#dbmsTypeSelect").val() == "sqlite" ? $("#dbTxtSqlite").val() : $("#dbTxt").val(),
59
+ "user" : $("#userTxt").val(),
60
+ "password" : $("#passwordTxt").val()
61
+ }, function(response){
62
+ if (response.status == "success")
63
+ {
64
+ Messenger().post("Connection to database server was established, creating persistent database records...");
65
+
66
+ $.post("/dbms/installer/before_process", {
67
+ "dbmsAdapter" : $("#dbmsTypeSelect").val(),
68
+ "dbmsHost" : $("#hostTxt").val(),
69
+ "dbmsPort" : $("#portTxt").val(),
70
+ "dbmsDatabase" : $("#dbmsTypeSelect").val() == "sqlite" ? $("#dbTxtSqlite").val() : $("#dbTxt").val(),
71
+ "dbmsUser" : $("#userTxt").val(),
72
+ "dbmsPassword" : $("#passwordTxt").val()
73
+ }, function(response){
74
+ if (response.status == "success")
75
+ {
76
+ Messenger().post("All done, redirecting...");
77
+ location.reload();
78
+ }
79
+ else
80
+ {
81
+ $("#sqlProceedBtn").removeAttr("disabled");
82
+ Messenger().post("There was a problem while doing initial processing");
83
+ }
84
+ }).error(function(){
85
+ {
86
+ $("#sqlProceedBtn").removeAttr("disabled");
87
+ Messenger().post("Unable to do initial processing");
88
+ }
89
+ })
90
+ } else
91
+ {
92
+ $("#sqlProceedBtn").removeAttr("disabled");
93
+ Messenger().post("Connection cannot be established due to either wrong login information or server unavailability");
94
+ }
95
+ }).error(function(){
96
+ $("#sqlProceedBtn").removeAttr("disabled");
97
+ Messenger().post("Unable to contact server");
98
+ });
99
+
100
+ });
101
+ });
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
@@ -0,0 +1,291 @@
1
+ class DbmsConnectionController < ApplicationController
2
+ include DbmsPluginHelper
3
+
4
+ # Only allow admin and developer
5
+ before_filter :get_current_user_role
6
+
7
+ # Load configuration items (MANDATORY, must be included)
8
+ APP_CONFIG = HashWithIndifferentAccess.new(YAML.load(File.read(File.expand_path('../../../config/dbms/dbms_config.yml', __FILE__))))
9
+
10
+ # Controller Actions
11
+ def makeNewConnection
12
+ SymmetricEncryption.load!
13
+
14
+ begin
15
+
16
+ # Check access
17
+ if (@curUserRole == 'contentadmin' ||
18
+ @curUserRole == 'user' ||
19
+ @curUserRole == 'loggedin' ||
20
+ @curUserRole == 'anonymous')
21
+ raise 'unauthorized access'
22
+ end
23
+
24
+ connectionResult = false
25
+
26
+ if (params[:type] == "sqlite")
27
+ connectionResult = Database.connect_sqlite(params[:database])
28
+ else
29
+ connectionResult = Database.connect_sql(params[:type], params[:host], params[:port], params[:user], SymmetricEncryption.encrypt(params[:password]), params[:database])
30
+ end
31
+
32
+ if (connectionResult)
33
+ render :json => {:status => "success"}
34
+ else
35
+ render :json => {:status => "failure"}
36
+ end
37
+ rescue Exception => ex
38
+ render :json => {:status => "failure", :message => ex.message}
39
+ end
40
+ end
41
+
42
+ def getConnectionStatus
43
+ begin
44
+
45
+ # Check access
46
+ if (@curUserRole == 'contentadmin' ||
47
+ @curUserRole == 'user' ||
48
+ @curUserRole == 'loggedin' ||
49
+ @curUserRole == 'anonymous')
50
+ raise 'unauthorized access'
51
+ end
52
+
53
+ if (ActiveRecord::Base.connection != Database.connection)
54
+ status = Database.connection.active?
55
+
56
+ if (status)
57
+ render :json => {:status => "success", :data => Database.connection.current_database}
58
+ else
59
+ render :json => {:status => "failure", :message => "database unavailable"}
60
+ end
61
+ else
62
+ render :json => {:status => "failure", :message => "connection unavailable"}
63
+ end
64
+ rescue Exception => ex
65
+ render :json => {:status => "failure", :message => ex.message}
66
+ end
67
+ end
68
+
69
+ def getListOfTables
70
+ begin
71
+
72
+ # Check access
73
+ if (@curUserRole == 'contentadmin' ||
74
+ @curUserRole == 'user' ||
75
+ @curUserRole == 'loggedin' ||
76
+ @curUserRole == 'anonymous')
77
+ raise 'unauthorized access'
78
+ end
79
+
80
+ if (ActiveRecord::Base.connection != Database.connection)
81
+ tables = Database.connection.tables
82
+ render :json => {:status => "success", :data => tables}
83
+ else
84
+ render :json => {:status => "success", :message => []}
85
+ end
86
+ rescue Exception => ex
87
+ render :json => {:status => "failure", :message => ex.message}
88
+ end
89
+ end
90
+
91
+ def executeSQL
92
+ begin
93
+
94
+ # Check access
95
+ if (@curUserRole == 'contentadmin' ||
96
+ @curUserRole == 'user' ||
97
+ @curUserRole == 'loggedin' ||
98
+ @curUserRole == 'anonymous')
99
+ raise 'unauthorized access'
100
+ end
101
+
102
+ if (ActiveRecord::Base.connection != Database.connection)
103
+
104
+ resultSet = []
105
+ begin
106
+ Database.connection.execute("BEGIN")
107
+ resultSet = Database.connection.select_all(params[:sql])
108
+ # Must put ROLLBACK here because Postgres adapter doesn't throw any exception when update or delete commands are executed
109
+ Database.connection.execute("ROLLBACK")
110
+
111
+ # Parse columns
112
+ columns = Array.new
113
+ if resultSet.length > 0
114
+ # Take this first one
115
+ firstResult = resultSet.first
116
+ columns = firstResult.keys
117
+ end
118
+
119
+ render :json => {:status => "success", :data => {:columns => columns, :result => resultSet}}
120
+ rescue NoMethodError
121
+ Database.connection.execute("ROLLBACK")
122
+ render :json => {:status => "success", :data => {:columns => [], :result => []}}
123
+ rescue ActiveRecord::StatementInvalid => dberr
124
+ render :json => { :status => "failure", :data => {:columns => [], :result => []}, :message => dberr.message }
125
+ end
126
+
127
+ else
128
+ render :json => {:status => "failure", :data => {:columns => [], :result => []}, :message => "connect not established"}
129
+ end
130
+ rescue Exception => ex
131
+ render :json => {:status => "failure", :data => {:columns => [], :result => []}, :message => "command executed, no result set returned"}
132
+ end
133
+ end
134
+
135
+ def getListOfStoredQueries
136
+ begin
137
+
138
+ # Check access
139
+ if (@curUserRole == 'contentadmin' ||
140
+ @curUserRole == 'user' ||
141
+ @curUserRole == 'loggedin' ||
142
+ @curUserRole == 'anonymous')
143
+ raise 'unauthorized access'
144
+ end
145
+
146
+ storedQueries = Metadata.all({ :conditions => ['cat = ? and sites_id = ?', APP_CONFIG[:DBMS_CAT_STORED_QUERY], session[:accessible_appid]] })
147
+
148
+ tArray = Array.new
149
+ storedQueries.each do |t|
150
+ tHash = Hash.new
151
+
152
+ tHash[:id] = t.id
153
+ tHash[:key] = t.key
154
+ tHash[:value] = SymmetricEncryption.decrypt(t.value)
155
+
156
+ tArray << tHash
157
+ end
158
+
159
+ render :json => {:status => "success", :data => tArray}
160
+ rescue Exception => ex
161
+ render :json => {:status => "failure", :message => ex.message}
162
+ end
163
+ end
164
+
165
+ def getOneStoredQueryInfos
166
+ SymmetricEncryption.load!
167
+
168
+ begin
169
+
170
+ # Check access
171
+ if (@curUserRole == 'contentadmin' ||
172
+ @curUserRole == 'user' ||
173
+ @curUserRole == 'loggedin' ||
174
+ @curUserRole == 'anonymous')
175
+ raise 'unauthorized access'
176
+ end
177
+
178
+ storedQuery = Metadata.first({ :conditions => [ 'id = ? and cat = ? and sites_id = ?', params[:id], params[:cat], session[:accessible_appid] ]})
179
+
180
+ render :json => {:status => "success", :data => {:id => storedQuery.id ,:key => storedQuery.key, :value => SymmetricEncryption.decrypt(storedQuery.value)}}
181
+ rescue Exception => ex
182
+ render :json => {:status => "failure", :message => ex.message}
183
+ end
184
+ end
185
+
186
+ def addStoredQuery
187
+ SymmetricEncryption.load!
188
+
189
+ begin
190
+
191
+ # Check access
192
+ if (@curUserRole == 'contentadmin' ||
193
+ @curUserRole == 'user' ||
194
+ @curUserRole == 'loggedin' ||
195
+ @curUserRole == 'anonymous')
196
+ raise 'unauthorized access'
197
+ end
198
+
199
+ # if (Metadata.all(:conditions => ["key = ?", params[:key]]).length > 0)
200
+ # raise "key is duplicated"
201
+ # end
202
+
203
+ # Check for value duplications
204
+ storedQueryValues = Metadata.all(:conditions => ["cat = ? and sites_id = ?", APP_CONFIG[:DBMS_CAT_STORED_QUERY], session[:accessible_appid]])
205
+ storedQueryValues.each do |t|
206
+ valueJsonObject = ActiveSupport::JSON.decode(SymmetricEncryption.decrypt(t.value))
207
+
208
+ if valueJsonObject['sql'] == params[:value]
209
+ raise "value is duplicated"
210
+ end
211
+ end
212
+
213
+ # If all is fine, create the stored query
214
+ Metadata.create({
215
+ :key => params[:key],
216
+ :value => SymmetricEncryption.encrypt({ :sql => params[:value], :enabled => false, :language => 'none' }.to_json),
217
+ :cat => APP_CONFIG[:DBMS_CAT_STORED_QUERY],
218
+ :mime => "text/sql",
219
+ :sites_id => session[:accessible_appid]
220
+ })
221
+
222
+ render :json => {:status => "success"}
223
+ rescue Exception => ex
224
+ render :json => {:status => "failure", :message => ex.message}
225
+ end
226
+ end
227
+
228
+ def updateStoredQuery
229
+ SymmetricEncryption.load!
230
+
231
+ begin
232
+
233
+ # Check access
234
+ if (@curUserRole == 'contentadmin' ||
235
+ @curUserRole == 'user' ||
236
+ @curUserRole == 'loggedin' ||
237
+ @curUserRole == 'anonymous')
238
+ raise 'unauthorized access'
239
+ end
240
+
241
+ # select that id first
242
+ updateObj = Metadata.find(params[:id])
243
+
244
+ if (!updateObj.nil?)
245
+ updateObjData = ActiveSupport::JSON.decode(SymmetricEncryption.decrypt(updateObj.value))
246
+ if (!params[:value].nil? && params[:enabled].nil? && params[:language].nil?)
247
+ Metadata.update(params[:id], {
248
+ :value => SymmetricEncryption.encrypt({ :sql => params[:value], :enabled => updateObjData['enabled'], :language => updateObjData['language'] }.to_json)
249
+ });
250
+ elsif (params[:value].nil? && !params[:enabled].nil? && params[:language].nil?)
251
+ Metadata.update(params[:id], {
252
+ :value => SymmetricEncryption.encrypt({ :sql => updateObjData['sql'] , :enabled => params[:enabled] == "true" ? true : false, :language => updateObjData['language'] }.to_json)
253
+ });
254
+ elsif (params[:value].nil? && params[:enabled].nil? && !params[:language].nil?)
255
+ Metadata.update(params[:id], {
256
+ :value => SymmetricEncryption.encrypt({ :sql => updateObjData['sql'] , :enabled => updateObjData['enabled'], :language => params[:language] }.to_json)
257
+ });
258
+ else
259
+ # Unimplemented
260
+ end
261
+ end
262
+
263
+ render :json => {:status => "success"}
264
+ rescue Exception => ex
265
+ render :json => {:status => "failure", :message => ex.message}
266
+ end
267
+ end
268
+
269
+ def deleteStoredQuery
270
+ begin
271
+
272
+ # Check access
273
+ if (@curUserRole == 'contentadmin' ||
274
+ @curUserRole == 'user' ||
275
+ @curUserRole == 'loggedin' ||
276
+ @curUserRole == 'anonymous')
277
+ raise 'unauthorized access'
278
+ end
279
+
280
+ Metadata.find_by_id(params[:id]).destroy
281
+
282
+ render :json => {:status => "success"}
283
+ rescue Exception => ex
284
+ render :json => {:status => "failure", :message => ex.message}
285
+ end
286
+ end
287
+ # END
288
+
289
+ private
290
+
291
+ end
@@ -0,0 +1,70 @@
1
+ class DbmsEngineController < ApplicationController
2
+ include DbmsPluginHelper, DbmsEngineHelper
3
+
4
+ layout false
5
+
6
+ before_filter :get_current_user_role
7
+
8
+ # Load configuration items (MANDATORY, must be included)
9
+ APP_CONFIG = HashWithIndifferentAccess.new(YAML.load(File.read(File.expand_path('../../../config/dbms/dbms_config.yml', __FILE__))))
10
+
11
+ # Allow all to access index
12
+ # Disallow all to access configure and installer, except for admin
13
+
14
+ # Write your readme here
15
+ def index
16
+
17
+ end
18
+
19
+ def configure
20
+
21
+ # Check access
22
+ if (@curUserRole == 'contentadmin' ||
23
+ @curUserRole == 'user' ||
24
+ @curUserRole == 'loggedin' ||
25
+ @curUserRole == 'anonymous')
26
+ raise 'unauthorized access'
27
+ end
28
+
29
+ if request.xhr?
30
+ if Metadata.first({ :conditions => [ 'key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_DATABASE], session[:accessible_appid]] }).nil?
31
+ raise "setup required"
32
+ else
33
+ if Metadata.first({ :conditions => [ 'key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_DATABASE], session[:accessible_appid]] }).value.empty?
34
+ raise "setup required"
35
+ else
36
+ # Perform connection persisting if necessary
37
+ persist_connection
38
+
39
+ respond_to do |t|
40
+ t.html
41
+ end
42
+ end
43
+ end
44
+ else
45
+ raise 'unauthorized access'
46
+ end
47
+ end
48
+
49
+ def installer
50
+
51
+ # Check access
52
+ if (@curUserRole == 'contentadmin' ||
53
+ @curUserRole == 'user' ||
54
+ @curUserRole == 'loggedin' ||
55
+ @curUserRole == 'anonymous')
56
+ raise 'unauthorized access'
57
+ end
58
+
59
+ if request.xhr?
60
+ respond_to do |t|
61
+ t.html
62
+ end
63
+ else
64
+ raise 'unauthorized access'
65
+ end
66
+ end
67
+
68
+ private
69
+
70
+ end
@@ -0,0 +1,138 @@
1
+ class DbmsInstallerController < ApplicationController
2
+ include DbmsPluginHelper
3
+
4
+ layout false
5
+
6
+ before_filter :get_current_user_role
7
+
8
+ # Load configuration items (MANDATORY, must be included)
9
+ APP_CONFIG = HashWithIndifferentAccess.new(YAML.load(File.read(File.expand_path('../../../config/dbms/dbms_config.yml', __FILE__))))
10
+
11
+ # Each step should return JSON status "success", "failure" or "unimplemented"
12
+
13
+ # Used for initializing and creating database entries
14
+ def before_process
15
+ SymmetricEncryption.load!
16
+
17
+ begin
18
+
19
+ # Check access
20
+ if (@curUserRole == 'contentadmin' ||
21
+ @curUserRole == 'user' ||
22
+ @curUserRole == 'loggedin' ||
23
+ @curUserRole == 'anonymous')
24
+ raise 'unauthorized access'
25
+ end
26
+
27
+ if !Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_ADAPTER], session[:accessible_appid]] }).nil?
28
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_ADAPTER], session[:accessible_appid]] }).destroy
29
+ end
30
+ if !Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_HOST], session[:accessible_appid]] }).nil?
31
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_HOST], session[:accessible_appid]] }).destroy
32
+ end
33
+ if !Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_PORT], session[:accessible_appid]] }).nil?
34
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_PORT], session[:accessible_appid]] }).destroy
35
+ end
36
+ if !Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_DATABASE], session[:accessible_appid]] }).nil?
37
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_DATABASE], session[:accessible_appid]] }).destroy
38
+ end
39
+ if !Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_USER], session[:accessible_appid]] }).nil?
40
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_USER], session[:accessible_appid]] }).destroy
41
+ end
42
+ if !Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_PASSWORD], session[:accessible_appid]] }).nil?
43
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_PASSWORD], session[:accessible_appid]] }).destroy
44
+ end
45
+
46
+ Metadata.create!({
47
+ :key => APP_CONFIG[:DBMS_CURRENT_ADAPTER],
48
+ :value => params[:dbmsAdapter].nil? ? '' : params[:dbmsAdapter],
49
+ :cat => APP_CONFIG[:DBMS_CAT_CONFIG],
50
+ :mime => "text/plain",
51
+ :sites_id => session[:accessible_appid]
52
+ })
53
+ Metadata.create!({
54
+ :key => APP_CONFIG[:DBMS_CURRENT_HOST],
55
+ :value => params[:dbmsHost].nil? ? '' : params[:dbmsHost],
56
+ :cat => APP_CONFIG[:DBMS_CAT_CONFIG],
57
+ :mime => "text/plain",
58
+ :sites_id => session[:accessible_appid]
59
+ })
60
+ Metadata.create!({
61
+ :key => APP_CONFIG[:DBMS_CURRENT_PORT],
62
+ :value => params[:dbmsPort].nil? ? '' : params[:dbmsPort],
63
+ :cat => APP_CONFIG[:DBMS_CAT_CONFIG],
64
+ :mime => "text/plain",
65
+ :sites_id => session[:accessible_appid]
66
+ })
67
+ Metadata.create!({
68
+ :key => APP_CONFIG[:DBMS_CURRENT_DATABASE],
69
+ :value => params[:dbmsDatabase].nil? ? '' : params[:dbmsDatabase],
70
+ :cat => APP_CONFIG[:DBMS_CAT_CONFIG],
71
+ :mime => "text/plain",
72
+ :sites_id => session[:accessible_appid]
73
+ })
74
+ Metadata.create!({
75
+ :key => APP_CONFIG[:DBMS_CURRENT_USER],
76
+ :value => params[:dbmsUser].nil? ? '' : params[:dbmsUser],
77
+ :cat => APP_CONFIG[:DBMS_CAT_CONFIG],
78
+ :mime => "text/plain",
79
+ :sites_id => session[:accessible_appid]
80
+ })
81
+ Metadata.create!({
82
+ :key => APP_CONFIG[:DBMS_CURRENT_PASSWORD],
83
+ :value => SymmetricEncryption.encrypt(params[:dbmsPassword].nil? ? '' : params[:dbmsPassword]),
84
+ :cat => APP_CONFIG[:DBMS_CAT_CONFIG],
85
+ :mime => "text/plain",
86
+ :sites_id => session[:accessible_appid]
87
+ })
88
+
89
+ render :json => { :status => 'success' }
90
+ rescue Exception => ex
91
+ render :json => { :status => 'failure', :message => ex.message }
92
+ end
93
+ end
94
+
95
+ # Used for logical processing
96
+ def core_process
97
+ render :json => { :status => 'unimplemented' }
98
+ end
99
+
100
+ # Used for configuring data
101
+ def post_process
102
+ render :json => { :status => 'unimplemented' }
103
+ end
104
+
105
+ # Uninstaller
106
+ def uninstall
107
+ begin
108
+
109
+ # Check access
110
+ if (@curUserRole == 'contentadmin' ||
111
+ @curUserRole == 'user' ||
112
+ @curUserRole == 'loggedin' ||
113
+ @curUserRole == 'anonymous')
114
+ raise 'unauthorized access'
115
+ end
116
+
117
+ # Delete all configuration items
118
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_ADAPTER], session[:accessible_appid]] }).destroy
119
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_HOST], session[:accessible_appid]] }).destroy
120
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_PORT], session[:accessible_appid]] }).destroy
121
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_DATABASE], session[:accessible_appid]] }).destroy
122
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_USER], session[:accessible_appid]] }).destroy
123
+ Metadata.first({ :conditions => ['key = ? and sites_id = ?', APP_CONFIG[:DBMS_CURRENT_PASSWORD], session[:accessible_appid]] }).destroy
124
+
125
+ # Delete all stored queries
126
+ Metadata.all({ :conditions => ['cat = ? and sites_id = ?', APP_CONFIG[:DBMS_CAT_STORED_QUERY], session[:accessible_appid]] }).each do |t|
127
+ t.destroy
128
+ end
129
+
130
+ render :json => { :status => 'success' }
131
+ rescue
132
+ render :json => { :status => 'failure' }
133
+ end
134
+ end
135
+
136
+ private
137
+
138
+ end
@@ -0,0 +1,33 @@
1
+ class DbmsServicesController < ApplicationController
2
+
3
+ # Load configuration items (MANDATORY, must be included)
4
+ APP_CONFIG = HashWithIndifferentAccess.new(YAML.load(File.read(File.expand_path('../../../config/dbms/dbms_config.yml', __FILE__))))
5
+
6
+ # Controller Actions
7
+ def execute
8
+ SymmetricEncryption.load!
9
+
10
+ begin
11
+ serviceObj = Metadata.find_by_key(params[:key])
12
+
13
+ if (!serviceObj.nil?)
14
+ serviceValueObj = ActiveSupport::JSON.decode(SymmetricEncryption.decrypt(serviceObj.value))
15
+
16
+ if (serviceValueObj['enabled'] == true)
17
+ resultSet = Database.connection.select_all(serviceValueObj['sql'])
18
+
19
+ render :json => {:status => "success", :data => resultSet}
20
+ else
21
+ raise "service unavailable"
22
+ end
23
+ else
24
+ raise "data unavailable"
25
+ end
26
+
27
+ rescue Exception => ex
28
+ render :json => {:status => "failure", :message => ex.message, :data => []}
29
+ end
30
+ end
31
+ # END
32
+
33
+ end