suma-db
Version:
A Brazilian database that supports JSON(JavaScript Object Notation)
39 lines (35 loc) • 1.52 kB
JavaScript
module.exports = function ({class: Class}, ...values) {
const validMethods = {
push: (function(keys) { Class.ref(keys.key).push(keys.value)}).bind(Class),
write: (function(keys) { Class.ref(keys.key).write(keys.value, keys.event || false)}).bind(Class),
delete: (function(keys) { Class.ref(keys.key || keys).delete()}).bind(Class),
add: (function(keys) { Class.ref(keys.key).add(keys.value)}).bind(Class),
sub: function(keys) {
Class.ref(keys.key).sub(keys.value)
},
writeIf: function(keys) {
if(keys.expression(Class)) Class.ref(keys.key).write(keys.value, keys.event || false)
},
deleteIf:function(keys) {
if(keys.expression(Class)) Class.ref(keys.key || keys).delete()
},
addIf:function(keys) {
if(keys.expression(Class)) Class.ref(keys.key).add(keys.value)
},
subIf:function(keys) {
if(keys.expression(Class)) Class.ref(keys.key).sub(keys.value)
},
pushIf: function(keys) {
if(keys.expression(Class)) Class.ref(keys.key).push(keys.value)
}
}
if(values.length === 1 && Array.isArray(values[0])) values = values[0]
values = values[0]
let i = 0
for(const index in values) {
const action = validMethods[index];
if(!action) throw new SyntaxError(`Invalid post method: post#${i}#${index}`)
action(values[index])
i++
}
}