wiki-server
Version:
A Federated Wiki Server
47 lines (39 loc) • 1.08 kB
JavaScript
var path = require('path')
, level = require('level')
, es = require('event-stream')
, fsPage = require('./page')
, synopsis = require('wiki-client/lib/synopsis')
module.exports = function (opts) {
var db = level(path.join(opts.data, 'leveldb'), {encoding: 'json'})
, classicPageGet = fsPage(opts).get
function put (file, page, cb) {
db.put(file, page, cb)
}
function get (file, cb) {
db.get(file, function (e, page) {
if (e) {
if (e.name !== 'NotFoundError') return cb(e)
return classicPageGet(file, cb)
}
cb(null, page)
})
}
function pages (cb) {
db.createReadStream()
.pipe(es.map(formsitemap))
.pipe(es.writeArray(cb))
function formsitemap (data, cb) {
var page = data.value
, date = ''
if (page.journal && (page.journal.length > 0)) date = page.journal.pop().date
cb(null,
{ slug: data.key
, title: page.title
, date: date
, synopsis: synopsis(page)
}
)
}
}
return { put: put, get: get, pages:pages }
}