backendless
Version:
Backendless JavaScript SDK for Node.js and the browser
149 lines (148 loc) • 4.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.OperationJSONAdapter = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _constants = require("./constants");
var _opResult = require("./op-result");
function resolveOpResultValueReference(uow, value) {
if (Array.isArray(value)) {
return value.map(function (item) {
return resolveOpResultValueReference(uow, item);
});
}
if (value && (0, _typeof2["default"])(value) === 'object') {
if (value.___ref) {
var opResult = uow.getOpResultById(value.opResultId);
if (value.resultIndex !== undefined) {
return opResult.resolveTo(value.resultIndex, value.propName);
}
if (value.propName !== undefined) {
return opResult.resolveTo(value.propName);
}
return opResult;
}
var result = {};
for (var prop in value) {
result[prop] = resolveOpResultValueReference(uow, value[prop]);
}
return result;
}
return value;
}
var OperationJSONAdapter = {
CREATE: function CREATE(uow, _ref) {
var table = _ref.table,
payload = _ref.payload;
return uow.create.call(uow, table, resolveOpResultValueReference(uow, payload));
},
DELETE: function DELETE(uow, _ref2) {
var table = _ref2.table,
payload = _ref2.payload;
return uow["delete"].call(uow, table, resolveOpResultValueReference(uow, payload));
},
UPDATE: function UPDATE(uow, _ref3) {
var table = _ref3.table,
payload = _ref3.payload;
return uow.update.call(uow, table, resolveOpResultValueReference(uow, payload));
},
UPSERT: function UPSERT(uow, _ref4) {
var table = _ref4.table,
payload = _ref4.payload;
return uow.upsert.call(uow, table, resolveOpResultValueReference(uow, payload));
},
UPDATE_BULK: function UPDATE_BULK(uow, _ref5) {
var table = _ref5.table,
payload = _ref5.payload;
var args = baseBulkArgs(uow, {
table: table,
payload: payload
});
args.push(resolveOpResultValueReference(uow, payload.changes));
return uow.bulkUpdate.apply(uow, args);
},
DELETE_BULK: function DELETE_BULK(uow, _ref6) {
var table = _ref6.table,
payload = _ref6.payload;
var args = baseBulkArgs(uow, {
table: table,
payload: payload
});
return uow.bulkDelete.apply(uow, args);
},
CREATE_BULK: function CREATE_BULK(uow, _ref7) {
var table = _ref7.table,
payload = _ref7.payload;
return uow.bulkCreate.call(uow, table, resolveOpResultValueReference(uow, payload));
},
UPSERT_BULK: function UPSERT_BULK(uow, _ref8) {
var table = _ref8.table,
payload = _ref8.payload;
return uow.bulkUpsert.call(uow, table, resolveOpResultValueReference(uow, payload));
},
SET_RELATION: function SET_RELATION(uow, _ref9) {
var table = _ref9.table,
payload = _ref9.payload;
return updateRelations(uow, 'setRelation', {
table: table,
payload: payload
});
},
DELETE_RELATION: function DELETE_RELATION(uow, _ref10) {
var table = _ref10.table,
payload = _ref10.payload;
return updateRelations(uow, 'deleteRelation', {
table: table,
payload: payload
});
},
ADD_RELATION: function ADD_RELATION(uow, _ref11) {
var table = _ref11.table,
payload = _ref11.payload;
return updateRelations(uow, 'addToRelation', {
table: table,
payload: payload
});
},
FIND: function FIND(uow, _ref12) {
var table = _ref12.table,
payload = _ref12.payload;
return uow.addOperations(_constants.OperationType.FIND, table, payload);
}
};
exports.OperationJSONAdapter = OperationJSONAdapter;
function baseBulkArgs(uow, _ref13) {
var table = _ref13.table,
payload = _ref13.payload;
var args = [];
if (payload.conditional) {
args.push(table);
args.push(payload.conditional);
} else {
var opRef = resolveOpResultValueReference(uow, payload.unconditional);
if (opRef instanceof _opResult.OpResult) {
args.push(opRef);
} else {
args.push(table);
args.push(opRef);
}
}
return args;
}
function updateRelations(uow, method, _ref14) {
var table = _ref14.table,
payload = _ref14.payload;
var args = [table];
if (typeof payload.parentObject === 'string') {
args.push({
objectId: payload.parentObject
});
} else {
args.push(resolveOpResultValueReference(uow, payload.parentObject));
}
args.push(payload.relationColumn);
args.push(payload.conditional || resolveOpResultValueReference(uow, payload.unconditional));
return uow[method].apply(uow, args);
}