Skip to content

Instantly share code, notes, and snippets.

@mbejda
Created June 27, 2014 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mbejda/1304e88e62d955e88591 to your computer and use it in GitHub Desktop.
Save mbejda/1304e88e62d955e88591 to your computer and use it in GitHub Desktop.
redis
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Hashids = require("hashids");
var hashids = new Hashids("this is my salt");
var sh = require("shorthash");
var redis = require("redis"),
client = redis.createClient('6379', '107.170.143.179');
var moment = require('moment');
var Cookies = require("cookies")
var uaParser = require('ua-parser');
var projectModel = new Schema({
aid: {
type: Schema.Types.ObjectId,
ref: 'User'
},
domain: {
type: 'string',
default: null
},
description: {
type: 'string',
default: null
},
hash: {
type: 'string',
required: true
},
});
projectModel.statics.newProject = function newProject(param) {
var Project = mongoose.model('Project');
var project = new Project(param);
project.hash = sh.unique(param.aid + new Date().getTime());
return {
exec: function(cb) {
project.save(function(error, results) {
cb(error, results);
});
}
}
}
projectModel.statics.deleteHashKey = function newProject(param) {
return {
exec: function(cb) {
}
}
}
projectModel.statics.getHashKey = function clickTotal(param) {
var hashkey = param.hashkey;
var args = [
['get', hashkey]
]
return {
exec: function(cb) {
client.multi(args).exec(function(err, replies) {
if (replies.length > 0) {
var rep = parseInt(replies[0]);
}
cb(null, {
hits: {
data: rep,
error: err,
}
});
});
}
}
}
projectModel.statics.getKeys = function getKeys(param) {
var pixel = param.pixel;
console.log(pixel)
var args = [
['smembers', pixel + ':customs:cumulative'],
['smembers', pixel + ':customs:incremental']
]
return {
exec: function(cb) {
client.multi(args).exec(function(err, replies) {
cb(null, {
cumulative: replies[0],
incremental: replies[1],
error: err
});
});
}
}
}
projectModel.statics.getHashKeyRange = function getStats(param) {
var from = param.start;
var to = param.end;
var project = param.hash;
var from_day = moment(from, "MM/DD/YYYY");
var to_day = moment(to, "MM/DD/YYYY");
var to_day = to_day.add('days', 1);
var args = [];
var dates = []
for (var m = from_day; m.isBefore(to_day); m.add('days', 1)) {
var day = m.format("MM/DD/YYYY");
args.push(['get', getHashKeyRange + ':day:' + day]);
dates.push({
x: m.unix() * 1000
})
}
return {
exec: function(cb) {
client.multi(args).exec(function(err, replies) {
for (var i = 0; i < replies.length; i++) {
dates[i].y = replies[i] == null ? 0 : parseInt(replies[i]);
}
cb(null, {
all: dates,
error: err
});
});
}
}
}
projectModel.statics.getStats = function getStats(param) {
var from = param.start;
var to = param.end;
var project = param.hash;
var from_day = moment(from, "MM/DD/YYYY");
var to_day = moment(to, "MM/DD/YYYY");
var to_day = to_day.add('days', 1);
var args = [];
var dates = []
for (var m = from_day; m.isBefore(to_day); m.add('days', 1)) {
var day = m.format("MM/DD/YYYY");
args.push(['get', project + ':day:' + day]);
dates.push({
x: m.unix() * 1000
})
}
return {
exec: function(cb) {
client.multi(args).exec(function(err, replies) {
for (var i = 0; i < replies.length; i++) {
dates[i].y = replies[i] == null ? 0 : parseInt(replies[i]);
}
cb(null, {
all: dates
});
});
}
}
}
projectModel.statics.clickTotal = function clickTotal(param) {
var project = param.pixel;
var args = [
['get', project + ':'],
['get', project + ':unique']
]
return {
exec: function(cb) {
client.multi(args).exec(function(err, replies) {
console.log(replies)
if (replies[0] == null) {
replies[0] = 0;
}
if (replies[1] == null) {
replies[1] = 0;
}
cb(null, {
hits: {
project: project,
total: parseInt(replies[0]),
unique: parseInt(replies[1])
}
});
});
}
}
}
projectModel.statics.clickRange = function clickRange(param) {
var from = param.start;
var to = param.end;
var project = param.hash;
var from_day = moment(from, "MM/DD/YYYY");
var to_day = moment(to, "MM/DD/YYYY");
var to_day = to_day.add('days', 1);
var args = [];
var dates = []
var unique = param.unique != undefined ? param.unique : false;
for (var m = from_day; m.isBefore(to_day); m.add('days', 1)) {
var day = m.format("MM/DD/YYYY");
if (unique == true) {
args.push(['get', project + ':unique:day:' + day]);
} else {
args.push(['get', project + ':day:' + day]);
}
dates.push({
x: m.unix() * 1000
})
}
return {
exec: function(cb) {
client.multi(args).exec(function(err, replies) {
for (var i = 0; i < replies.length; i++) {
dates[i].y = replies[i] == null ? 0 : parseInt(replies[i]);
}
cb(null, {
all: dates
});
});
}
}
}
projectModel.statics.deleteProject = function newProject(param) {
var self = this;
var aid = param.aid;
var hash = param.hash;
return {
exec: function(cb) {
self.findOneAndRemove({
hash: hash
}).exec(function(error, results) {
client.delWildcard(hash + '*', function(err, res) {
cb(error, results);
});
});
}
}
}
module.exports = mongoose.model('Project', projectModel);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment