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 @@ ...@@ -3949,6 +3949,43 @@
// generate storage object // generate storage object
storage = {}; 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 * validate (a form) before submitting to storage
* @method validate * @method validate
...@@ -5865,35 +5902,27 @@ ...@@ -5865,35 +5902,27 @@
*/ */
// NOTE: until we have real data we load fake data on application init! // NOTE: until we have real data we load fake data on application init!
app.fetchData = function (parcel) { 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) { if (parcel.query._id) {
// TODO: don't set if don't need... // TODO: don't set if don't need...
delete parcel.query.limit; delete parcel.query.limit;
method = "get"; 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) return storage[parcel.storage][method || "allDocs"](parcel.query)
.then(function (response) { .then(function (response) {
// TODO: is this the best way of forcing the allDocs response format // TODO: best way?
// here? if (convert !== undefined && response.status === 200) {
// TODO: MAKE A CONVERTER HERE answer = storage.mapResponse(response, convert);
if (convert && response.status === 200) {
answer = {
"data": {
"total_rows": 1,
"rows": [
{
"id": response.id,
"key": response.id,
"value": {},
"doc": response.data
}
]
}
};
} else { } else {
answer = response; 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