Skip to content

Instantly share code, notes, and snippets.

@hobbes3
Last active October 7, 2015 23:49
Show Gist options
  • Save hobbes3/269543aff0593d2c039c to your computer and use it in GitHub Desktop.
Save hobbes3/269543aff0593d2c039c to your computer and use it in GitHub Desktop.
key value store kv crud create read update delete
// 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
}
);
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