mirror of
https://github.com/orbitdb/orbitdb.git
synced 2025-10-07 22:57:07 +00:00
Add naive local cache
This commit is contained in:
parent
872ae19944
commit
070f289940
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,3 +6,4 @@ debug.log
|
|||||||
isolate*.log
|
isolate*.log
|
||||||
dump.rdb
|
dump.rdb
|
||||||
Vagrantfile
|
Vagrantfile
|
||||||
|
orbit-db-cache.json
|
||||||
|
30
src/Cache.js
Normal file
30
src/Cache.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const filename = 'orbit-db-cache.json';
|
||||||
|
let cache = {};
|
||||||
|
|
||||||
|
class Cache {
|
||||||
|
static set(key, value) {
|
||||||
|
cache[key] = value;
|
||||||
|
fs.writeFile(path.resolve(filename), JSON.stringify(cache, null, 2) + "\n", (err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
// console.log('It\'s saved!', path.resolve(filename));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static get(key) {
|
||||||
|
return cache[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
static loadCache() {
|
||||||
|
if(fs.existsSync(path.resolve(filename))) {
|
||||||
|
console.log('Load cache from', path.resolve(filename));
|
||||||
|
cache = JSON.parse(fs.readFileSync(path.resolve(filename)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Cache;
|
@ -7,6 +7,7 @@ const await = require('asyncawait/await');
|
|||||||
const Log = require('ipfs-log');
|
const Log = require('ipfs-log');
|
||||||
const DBOperation = require('./db/Operation');
|
const DBOperation = require('./db/Operation');
|
||||||
const Post = require('./post/Post');
|
const Post = require('./post/Post');
|
||||||
|
const Cache = require('./Cache');
|
||||||
|
|
||||||
class OrbitDB {
|
class OrbitDB {
|
||||||
constructor(ipfs) {
|
constructor(ipfs) {
|
||||||
@ -20,6 +21,9 @@ class OrbitDB {
|
|||||||
this.user = user;
|
this.user = user;
|
||||||
this._logs[channel] = await(Log.create(this._ipfs, this.user.username));
|
this._logs[channel] = await(Log.create(this._ipfs, this.user.username));
|
||||||
this.events[channel] = new EventEmitter();
|
this.events[channel] = new EventEmitter();
|
||||||
|
|
||||||
|
Cache.loadCache();
|
||||||
|
this.sync(channel, Cache.get(channel));
|
||||||
}
|
}
|
||||||
|
|
||||||
sync(channel, hash) {
|
sync(channel, hash) {
|
||||||
@ -33,9 +37,10 @@ class OrbitDB {
|
|||||||
|
|
||||||
// Only emit the event if something was added
|
// Only emit the event if something was added
|
||||||
const joinedCount = (this._logs[channel].items.length - oldCount);
|
const joinedCount = (this._logs[channel].items.length - oldCount);
|
||||||
if(joinedCount > 0)
|
if(joinedCount > 0) {
|
||||||
this.events[channel].emit('sync', channel, hash);
|
this.events[channel].emit('sync', channel, hash);
|
||||||
|
Cache.set(channel, hash);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.events[channel].emit('loaded', channel, hash);
|
this.events[channel].emit('loaded', channel, hash);
|
||||||
// }), 3000);
|
// }), 3000);
|
||||||
@ -120,6 +125,7 @@ class OrbitDB {
|
|||||||
const hash = await(DBOperation.create(this._ipfs, this._logs[channel], this.user, operation, key, value));
|
const hash = await(DBOperation.create(this._ipfs, this._logs[channel], this.user, operation, key, value));
|
||||||
const listHash = await(Log.getIpfsHash(this._ipfs, this._logs[channel]));
|
const listHash = await(Log.getIpfsHash(this._ipfs, this._logs[channel]));
|
||||||
this.events[channel].emit('write', channel, listHash);
|
this.events[channel].emit('write', channel, listHash);
|
||||||
|
Cache.set(channel, listHash);
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user