1
0
Fork 0
arangodb/js/actions/document.js

126 lines
3.0 KiB
JavaScript

function getDocument(req, res) {
if (req._suffix.length != 2) {
actionResultError (req, res, 404, documentNotFound, "Document not found");
return;
}
try {
var collection = decodeURIComponent(req._suffix[0]);
var documentId = decodeURIComponent(req._suffix[1]);
var result = {
"collection" : collection,
"documentId" : documentId,
"document" : {}
};
result.document = db[collection].document_wrapped(documentId);
actionResultOK(req, res, 200, result);
}
catch (e) {
actionResultError (req, res, 404, documentNotFound, "Document not found: " + e);
}
}
function deleteDocument(req, res) {
if (req._suffix.length != 2) {
actionResultError (req, res, 404, documentNotFound, "Document not found");
return;
}
try {
var collection = decodeURIComponent(req._suffix[0]);
var documentId = decodeURIComponent(req._suffix[1]);
var result = {
"collection" : collection,
"documentId" : documentId
};
if (db[collection].delete(documentId)) {
result.document = undefined;
actionResultOK(req, res, 200, result);
}
else {
actionResultError (req, res, 304, documentNotModified, "Document not deleted");
}
}
catch (e) {
actionResultError(req, res, 304, documentNotModified, "Document not deleted: " + e);
}
}
function postDocument(req, res) {
if (req._suffix.length != 1) {
actionResultError (req, res, 404, collectionNotFound, "Collection not found");
return;
}
try {
var collection = decodeURIComponent(req._suffix[0]);
var json = JSON.parse(req._requestBody);
var id = db[collection].save(json);
var result = {
"collection" : collection,
"documentId" : id
};
actionResultOK(req, res, 201, result);
}
catch (e) {
actionResultError (req, res, 404, documentNotModified, "Document not saved: " + e);
}
}
function putDocument(req, res) {
if (req._suffix.length != 2) {
actionResultError (req, res, 404, documentNotFound, "Document not found");
return;
}
try {
var collection = decodeURIComponent(req._suffix[0]);
var documentId = decodeURIComponent(req._suffix[1]);
var json = JSON.parse(req._requestBody);
var id = db[collection].replace(documentId, json);
var result = {
"collection" : collection,
"documentId" : id
};
actionResultOK(req, res, 202, result);
}
catch (e) {
actionResultError (req, res, 404, documentNotModified, "Document not changed: " + e);
}
}
defineAction("_api/document",
function (req, res) {
switch (req._requestType) {
case ("GET") :
getDocument(req, res);
break;
case ("POST") :
postDocument(req, res);
break;
case ("PUT") :
putDocument(req, res);
break;
case ("DELETE") :
deleteDocument(req, res);
break;
default:
actionResultUnsupported(req, res);
}
},
{
parameters : {
}
}
);