Commit 4b57ee55 authored by Sven Franck's avatar Sven Franck

move mapping of response to allDocs response in separate method

parent 4b237cf9
......@@ -3949,6 +3949,43 @@
// generate storage object
storage = {};
/**
* Convert storage responses into allDocs response format which
* is used in subsequent methods
* @method mapResponse
* @param {object} response Response object
* @param {string} convert Type of conversion required
* @return {object} "allDocs" response object
**/
storage.mapResponse = function (response, convert) {
var answer, i, record, key, data;
answer = {"data": {"total_rows": null, "rows": []}};
if (convert === "single_item") {
answer.data.total_rows = 1;
answer.data.rows.push({
"id": response.id,
"key": response.id,
"values": {},
"doc": response.data
});
} else {
data = {};
answer.data.total_rows = response.data.total_rows;
for (i = 0; i < response.data.total_rows; i += 1) {
record = response.data.rows[i].values;
for (key in record) {
if (record.hasOwnProperty(key)) {
data[key] = record[key];
}
}
answer.data.rows.push(data);
}
}
return answer;
};
/**
* validate (a form) before submitting to storage
* @method validate
......@@ -5865,35 +5902,27 @@
*/
// NOTE: until we have real data we load fake data on application init!
app.fetchData = function (parcel) {
var method, convert, answer;
var method, convert, answer, select_list;
select_list = parcel.query && parcel.query.select_list && parcel.query.select_list.length;
if (parcel.query._id) {
// TODO: don't set if don't need...
delete parcel.query.limit;
method = "get";
convert = true;
convert = "single_item";
}
if (select_list && parcel.query.include_docs === undefined) {
convert = "values";
}
return storage[parcel.storage][method || "allDocs"](parcel.query)
.then(function (response) {
// TODO: is this the best way of forcing the allDocs response format
// here?
// TODO: MAKE A CONVERTER HERE
if (convert && response.status === 200) {
answer = {
"data": {
"total_rows": 1,
"rows": [
{
"id": response.id,
"key": response.id,
"value": {},
"doc": response.data
}
]
}
};
// TODO: best way?
if (convert !== undefined && response.status === 200) {
answer = storage.mapResponse(response, convert);
} else {
answer = response;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment