93 lines
2.7 KiB
JavaScript
93 lines
2.7 KiB
JavaScript
var exports = module.exports;
|
|
//var {Database} = require('sqlite3');
|
|
//var sqldb = new Database(_data+'/data.db');
|
|
var {Client} = require('cassandra-driver');
|
|
const cass = new Client({
|
|
cloud: {secureConnectBundle:'secure-connect-todo.zip'},
|
|
credentials: {
|
|
username:'',
|
|
password:''
|
|
},
|
|
});
|
|
|
|
async function startcass() {
|
|
await cass.connect();
|
|
cass.execute('use todo');
|
|
}
|
|
startcass();
|
|
|
|
(()=>{
|
|
var rankCache = new Map();
|
|
var rankReadTimeouts = new Map();
|
|
var rankWriteTimeouts = new Map();
|
|
var rankReadBounce = 1000*60*5;
|
|
var rankWriteBounce = 1000*15;
|
|
function rawgetrank(user,cb) {
|
|
cass.execute('Select json from rank where user=?',[user]).then(result=>{
|
|
if(!result || !result.rows || !result.rows.length) return cb(null,{});
|
|
cb(null,JSON.parse(result.rows[0].json));
|
|
}).catch(cb);
|
|
}
|
|
|
|
function updaterankreadtimeout(user) {
|
|
if(rankReadTimeouts.has(user)) clearTimeout(rankReadTimeouts.get(user));
|
|
rankReadTimeouts.set(user,setTimeout(()=>rankCache.delete(user),rankReadBounce));
|
|
}
|
|
|
|
function getrank(user,cb) {
|
|
updaterankreadtimeout(user);
|
|
if(rankCache.has(user)) return cb(null,rankCache.get(user));
|
|
rawgetrank(user,(err,obj)=>{
|
|
if(err) return cb(err);
|
|
rankCache.set(user,obj);
|
|
return cb(null,obj);
|
|
});
|
|
}
|
|
|
|
function rawwriterank(user,obj) {
|
|
cass.execute('Insert into rank (user,json) values (?,?)',[user,JSON.stringify(obj)]);
|
|
}
|
|
|
|
function writerank(user,obj) {
|
|
if(rankWriteTimeouts.has(user)) clearTimeout(rankWriteTimeouts.get(user));
|
|
rankWriteTimeouts.set(user,setTimeout(()=>rawwriterank(user,obj),rankWriteBounce));
|
|
}
|
|
exports.getrank=getrank;
|
|
exports.writerank=writerank;
|
|
})();
|
|
|
|
(()=>{
|
|
function rawgettitle(user,id,cb) {
|
|
cass.execute('Select title from titles where user=? and id=?',[user,id]).then(result=>{
|
|
if(!result || !result.rows || !result.rows.length) return cb('title not found');
|
|
cb(null,result.rows[0]);
|
|
}).catch(cb);
|
|
}
|
|
function rawwritetitle(user,id,title) {
|
|
cass.execute('Insert into titles (user,id,title) values (?,?,?)',[user.id,title]);
|
|
}
|
|
exports.gettitle=rawgettitle;
|
|
exports.writetitle=rawwritetitle;
|
|
})();
|
|
|
|
(()=>{
|
|
function rawgetday(user,day,cb) {
|
|
cass.execute('Select json from day where user=? and day=?',[user,day]).then(result=>{
|
|
if(!result || !result.rows || !result.rows.length) return cb(null,[]);
|
|
cb(null,JSON.parse(result.rows[0].json));
|
|
}).catch(cb);
|
|
}
|
|
function rawwriteday(user,day,list) {
|
|
cass.execute('Insert into day (user,day,json) values (?,?,?)',[user,day,JSON.stringify(list)]);
|
|
}
|
|
exports.getday=rawgetday;
|
|
exports.writeday=rawwriteday;
|
|
})();
|
|
|
|
(()=>{
|
|
function rawaddlog(user,title,id) {
|
|
cass.execute('Insert into addjournal (user,time,title,id) values (?,?,?,?)',[user,Date.now(),title,id]);
|
|
}
|
|
exports.addlogwrite=rawaddlog;
|
|
})();
|