Last active
October 7, 2015 23:49
-
-
Save hobbes3/269543aff0593d2c039c to your computer and use it in GitHub Desktop.
key value store kv crud create read update delete
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Create or Update | |
var record = { | |
"name": "bob", | |
"age": 23, | |
"sex": "male" | |
}; | |
var key = "560c3dacb3d2022e1f7be951"; | |
service.request( | |
"storage/collections/data/<my_collection>/" + encodeURIComponent(key), // leave key empty to create | |
"POST", | |
null, | |
null, | |
JSON.stringify(record), // This will completely overwrite and replace (not merge) | |
{"Content-Type": "application/json"}, | |
null | |
); | |
// Read | |
var query = { | |
"$or": [{"name": "bob"}, {"name": "sally"}] | |
}; | |
service.get( | |
"storage/collections/data/<my_collection>/", | |
{"query": JSON.stringify(query)}, | |
function(err, results) { | |
// Read results.data | |
} | |
); | |
// Delete | |
var key = "560c3dacb3d2022e1f7be951"; | |
service.del("storage/collections/data/<my_collection>/" + encodeURIComponent(key)) | |
.done(function() { | |
// Do something when it finishes | |
} | |
); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require([ | |
"jquery", | |
"underscore", | |
"splunkjs/mvc", | |
"splunkjs/mvc/searchmanager", | |
"splunkjs/mvc/simplexml/ready!" | |
], function( | |
$, | |
_, | |
mvc, | |
SearchManager | |
) { | |
function submit_and_update_url() { | |
submitted_tokens.set(unsubmitted_tokens.toJSON()); | |
mvc.Components.get('url').saveOnlyWithPrefix('form\\.', unsubmitted_tokens.toJSON(), { | |
replaceState: false | |
}); | |
} | |
var unsubmitted_tokens = mvc.Components.get('default'); | |
var submitted_tokens = mvc.Components.get('submitted'); | |
var service = mvc.createService({owner: "nobody"}); | |
var elo_search = new SearchManager({ | |
id: "elo_search", | |
earliest_time: "rt-30s", | |
latest_time: "rt", | |
search: "tag=tf2 player_action=killed | eval id=md5(_raw) | eval player_uid=coalesce(player_uid, md5(player_name)) | eval victim_uid=coalesce(victim_uid, md5(victim_name)) | table _time id player_team player_name player_uid player_weapon victim_name victim_uid | sort 0 -_time" | |
}); | |
var elo_results = elo_search.data("preview"); | |
var LIMIT = 50; | |
var last_event = ""; | |
elo_results.on("data", function() { | |
var fields = this.data().fields; | |
var rows = this.data().rows; | |
var i; | |
for(i = 0; i < LIMIT; i++) { | |
var ret = (function() { | |
var id = rows[i][fields.indexOf("id")]; | |
var winner = rows[i][fields.indexOf("player_name")]; | |
var w_uid = rows[i][fields.indexOf("player_uid")]; | |
var loser = rows[i][fields.indexOf("victim_name")]; | |
var l_uid = rows[i][fields.indexOf("victim_uid")]; | |
if(id === last_event) { | |
return 0; | |
} | |
var query = { | |
"$or": [{"uid": w_uid}, {"uid": l_uid}] | |
}; | |
service.get("storage/collections/data/tf2_elo/", {"query": JSON.stringify(query)}, function(err, results) { | |
var points; | |
var w_key, w_elo, new_w_elo; | |
var l_key, l_elo, new_l_elo; | |
if(results.data.length === 0) { | |
points = 25; | |
w_key = ""; | |
w_elo = 1000; | |
new_w_elo = 1025; | |
l_key = ""; | |
l_elo = 1000; | |
new_l_elo = 975; | |
} | |
else { | |
var winner_row = _(results.data).findWhere({"uid": w_uid}); | |
var loser_row = _(results.data).findWhere({"uid": l_uid}); | |
var w_key = winner_row ? winner_row._key : ""; | |
var l_key = loser_row ? loser_row._key : ""; | |
var w_elo = winner_row ? parseInt(winner_row.elo) : 1000; | |
var l_elo = loser_row ? parseInt(loser_row.elo) : 1000; | |
var k = 50; | |
if(w_elo >= 1300) { | |
k = 30 | |
} | |
else if(w_elo >= 1600) { | |
k = 15; | |
} | |
var we = 1 / (1 + Math.pow(10, (l_elo-w_elo)/400)); | |
points = Math.max(Math.round(k * (1 - we)), 5); | |
if(l_elo < 500) { | |
points = 0; | |
} | |
new_w_elo = w_elo + points; | |
new_l_elo = l_elo - points; | |
} | |
var w_record = { | |
"uid": w_uid, | |
"name": winner, | |
"elo": new_w_elo | |
}; | |
var l_record = { | |
"uid": l_uid, | |
"name": loser, | |
"elo": new_l_elo | |
}; | |
service.request( | |
"storage/collections/data/tf2_elo/" + w_key, | |
"POST", | |
null, | |
null, | |
JSON.stringify(w_record), | |
{"Content-Type": "application/json"}, | |
null | |
); | |
service.request( | |
"storage/collections/data/tf2_elo/" + l_key, | |
"POST", | |
null, | |
null, | |
JSON.stringify(l_record), | |
{"Content-Type": "application/json"}, | |
null | |
); | |
$("#tf2_kill_log").prepend(winner + " (" + w_elo + " +" + points + ") killed " + loser + " (" + l_elo + " -" + points + ")<br/>"); | |
}); | |
return 1; | |
})(); | |
if(ret === 0) { | |
break; | |
} | |
} | |
last_event = rows[0][fields.indexOf("id")]; | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment