mirror of https://gitee.com/bigwinds/arangodb
improved way of importing and exporting aql queries
This commit is contained in:
parent
777decd050
commit
ed1942c8d0
|
@ -340,14 +340,53 @@ controller.put('/foxx/move/:key', function(req, res) {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
controller.post("/query/upload/:user", function(req, res) {
|
||||||
|
var user = req.params("user");
|
||||||
|
var response, queries, userColl, storedQueries, queriesToSave;
|
||||||
|
|
||||||
|
queries = req.body();
|
||||||
|
userColl = db._users.byExample({"user": user}).toArray()[0];
|
||||||
|
storedQueries = userColl.extra.queries;
|
||||||
|
queriesToSave = [];
|
||||||
|
|
||||||
|
underscore.each(queries, function(newq) {
|
||||||
|
var toBeStored = true;
|
||||||
|
underscore.each(storedQueries, function(stored) {
|
||||||
|
if (stored.name === newq.name) {
|
||||||
|
toBeStored = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (toBeStored === true) {
|
||||||
|
queriesToSave.push(newq);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
queriesToSave = queriesToSave.concat(storedQueries);
|
||||||
|
|
||||||
|
var toUpdate = {
|
||||||
|
extra: {
|
||||||
|
queries: queriesToSave
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = db._users.update(userColl, toUpdate, true);
|
||||||
|
res.json(result);
|
||||||
|
}).summary("Upload user queries")
|
||||||
|
.notes("This function uploads all given user queries");
|
||||||
|
|
||||||
|
/** Download stored queries
|
||||||
|
*
|
||||||
|
* Download and export all queries from the given username.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
controller.get("/query/download/:user", function(req, res) {
|
controller.get("/query/download/:user", function(req, res) {
|
||||||
var user = req.params("user");
|
var user = req.params("user");
|
||||||
|
|
||||||
var result = db._users.byExample({"user": user}).toArray()[0];
|
var result = db._users.byExample({"user": user}).toArray()[0];
|
||||||
|
|
||||||
res.set("Content-Type", "application/json");
|
res.set("Content-Type", "application/json");
|
||||||
res.set("Content-Disposition", "attachment; filename=queries.json");
|
res.set("Content-Disposition", "attachment; filename=queries.json");
|
||||||
res.json({"extra": result.extra});
|
res.json(result.extra.queries);
|
||||||
|
|
||||||
}).summary("Download all user queries")
|
}).summary("Download all user queries")
|
||||||
.notes("This function downloads all user queries from the given user");
|
.notes("This function downloads all user queries from the given user");
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*jslint indent: 2, nomen: true, maxlen: 100, vars: true, white: true, plusplus: true, stupid: true*/
|
/*jslint indent: 2, nomen: true, maxlen: 100, vars: true, white: true, plusplus: true, stupid: true*/
|
||||||
/*global require, exports, Backbone, activeUser, window, ArangoQuery, $, data, _ */
|
/*global require, exports, Backbone, activeUser, window, ArangoQuery, $, data, _, arangoHelper*/
|
||||||
(function() {
|
(function() {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
@ -116,97 +116,30 @@
|
||||||
return returnValue3;
|
return returnValue3;
|
||||||
},
|
},
|
||||||
|
|
||||||
saveImportQueries: function(file) {
|
saveImportQueries: function(file, callback) {
|
||||||
|
|
||||||
if (this.activeUser === 0) {
|
if (this.activeUser === 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var queries = [];
|
window.progressView.show("Fetching documents...");
|
||||||
this.each(function(query) {
|
|
||||||
queries.push({
|
|
||||||
value: query.attributes.value,
|
|
||||||
name: query.attributes.name
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
var self = this,
|
|
||||||
returnValue1 = false,
|
|
||||||
returnValue2 = false,
|
|
||||||
returnValue3 = false;
|
|
||||||
|
|
||||||
var oldQueries = this.currentExtra;
|
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
cache: false,
|
cache: false,
|
||||||
type: "PATCH",
|
type: "POST",
|
||||||
async: false,
|
async: false,
|
||||||
url: "/_api/user/" + this.activeUser,
|
url: "query/upload/" + this.activeUser,
|
||||||
data: file,
|
data: file,
|
||||||
contentType: "application/json",
|
contentType: "application/json",
|
||||||
processData: false,
|
processData: false,
|
||||||
success: function() {
|
success: function() {
|
||||||
returnValue1 = true;
|
window.progressView.hide();
|
||||||
|
callback();
|
||||||
},
|
},
|
||||||
error: function() {
|
error: function() {
|
||||||
returnValue1 = false;
|
window.progressView.hide();
|
||||||
|
arangoHelper.arangoError("Query error", "queries could not be imported");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.fetch({
|
|
||||||
async: false,
|
|
||||||
success: function() {
|
|
||||||
}});
|
|
||||||
|
|
||||||
var newQueries = self.currentExtra;
|
|
||||||
|
|
||||||
var nameTaken = false;
|
|
||||||
|
|
||||||
_.each(oldQueries.queries, function(query) {
|
|
||||||
|
|
||||||
_.each(newQueries.queries, function(newQuery) {
|
|
||||||
if (newQuery.name === query.name) {
|
|
||||||
nameTaken = true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (nameTaken === false) {
|
|
||||||
newQueries.queries.push({
|
|
||||||
name: query.name,
|
|
||||||
value: query.value
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
cache: false,
|
|
||||||
type: "PATCH",
|
|
||||||
async: false,
|
|
||||||
url: "/_api/user/" + this.activeUser,
|
|
||||||
data: JSON.stringify({
|
|
||||||
extra: newQueries
|
|
||||||
}),
|
|
||||||
contentType: "application/json",
|
|
||||||
processData: false,
|
|
||||||
success: function() {
|
|
||||||
returnValue2 = true;
|
|
||||||
},
|
|
||||||
error: function() {
|
|
||||||
returnValue2 = false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.fetch({
|
|
||||||
async: false
|
|
||||||
});
|
|
||||||
|
|
||||||
if (returnValue1 === true && returnValue2 === true) {
|
|
||||||
returnValue3 = true;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
returnValue3 = false;
|
|
||||||
}
|
|
||||||
return returnValue3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -293,15 +293,17 @@
|
||||||
importCustomQueries: function () {
|
importCustomQueries: function () {
|
||||||
var result, self = this;
|
var result, self = this;
|
||||||
if (this.allowUpload === true) {
|
if (this.allowUpload === true) {
|
||||||
result = self.collection.saveImportQueries(self.file);
|
|
||||||
|
|
||||||
if (result === true) {
|
var callback = function() {
|
||||||
|
this.collection.fetch({async: false});
|
||||||
this.updateLocalQueries();
|
this.updateLocalQueries();
|
||||||
this.renderSelectboxes();
|
this.renderSelectboxes();
|
||||||
this.updateTable();
|
this.updateTable();
|
||||||
$('#customs-switch').click();
|
|
||||||
self.allowUpload = false;
|
self.allowUpload = false;
|
||||||
}
|
$('#customs-switch').click();
|
||||||
|
};
|
||||||
|
|
||||||
|
self.collection.saveImportQueries(self.file, callback.bind(this));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -319,6 +321,11 @@
|
||||||
$.ajax("whoAmI", {async:false}).done(
|
$.ajax("whoAmI", {async:false}).done(
|
||||||
function(data) {
|
function(data) {
|
||||||
name = data.name;
|
name = data.name;
|
||||||
|
|
||||||
|
if (name === null) {
|
||||||
|
name = "root";
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
window.open(encodeURI("query/download/" + name));
|
window.open(encodeURI("query/download/" + name));
|
||||||
|
|
Loading…
Reference in New Issue