refactor: removed redis + new scheduler engine
This commit is contained in:
@@ -23,15 +23,15 @@ module.exports = class Navigation extends Model {
|
||||
|
||||
static async getTree({ cache = false } = {}) {
|
||||
if (cache) {
|
||||
const navTreeCached = await WIKI.redis.get('nav:sidebar')
|
||||
const navTreeCached = await WIKI.cache.get('nav:sidebar')
|
||||
if (navTreeCached) {
|
||||
return JSON.parse(navTreeCached)
|
||||
return navTreeCached
|
||||
}
|
||||
}
|
||||
const navTree = await WIKI.models.navigation.query().findOne('key', 'site')
|
||||
if (navTree) {
|
||||
if (cache) {
|
||||
await WIKI.redis.set('nav:sidebar', JSON.stringify(navTree.config), 'EX', 300)
|
||||
await WIKI.cache.set('nav:sidebar', navTree.config, 300)
|
||||
}
|
||||
return navTree.config
|
||||
} else {
|
||||
|
@@ -217,15 +217,12 @@ module.exports = class Page extends Model {
|
||||
}
|
||||
|
||||
static async renderPage(page) {
|
||||
const pipeline = await WIKI.models.renderers.getRenderingPipeline(page.contentType)
|
||||
const renderJob = await WIKI.queue.job.renderPage.add({
|
||||
page,
|
||||
pipeline
|
||||
}, {
|
||||
removeOnComplete: true,
|
||||
removeOnFail: true
|
||||
})
|
||||
return renderJob.finished()
|
||||
const renderJob = await WIKI.scheduler.registerJob({
|
||||
name: 'render-page',
|
||||
immediate: true,
|
||||
worker: true
|
||||
}, page.id)
|
||||
return renderJob.finished
|
||||
}
|
||||
|
||||
static async getPage(opts) {
|
||||
@@ -240,6 +237,7 @@ module.exports = class Page extends Model {
|
||||
}
|
||||
|
||||
static async getPageFromDb(opts) {
|
||||
const queryModeID = _.isNumber(opts)
|
||||
return WIKI.models.pages.query()
|
||||
.column([
|
||||
'pages.*',
|
||||
@@ -252,11 +250,14 @@ module.exports = class Page extends Model {
|
||||
])
|
||||
.joinRelation('author')
|
||||
.joinRelation('creator')
|
||||
.where({
|
||||
.where(queryModeID ? {
|
||||
'pages.id': opts
|
||||
} : {
|
||||
'pages.path': opts.path,
|
||||
'pages.localeCode': opts.locale
|
||||
})
|
||||
.andWhere(builder => {
|
||||
if (queryModeID) return
|
||||
builder.where({
|
||||
'pages.isPublished': true
|
||||
}).orWhere({
|
||||
@@ -265,6 +266,7 @@ module.exports = class Page extends Model {
|
||||
})
|
||||
})
|
||||
.andWhere(builder => {
|
||||
if (queryModeID) return
|
||||
if (opts.isPrivate) {
|
||||
builder.where({ 'pages.isPrivate': true, 'pages.privateNS': opts.privateNS })
|
||||
} else {
|
||||
|
@@ -35,22 +35,26 @@ module.exports = class Renderer extends Model {
|
||||
return WIKI.models.renderers.query()
|
||||
}
|
||||
|
||||
static async fetchDefinitions() {
|
||||
const rendererDirs = await fs.readdir(path.join(WIKI.SERVERPATH, 'modules/rendering'))
|
||||
let diskRenderers = []
|
||||
for (let dir of rendererDirs) {
|
||||
const def = await fs.readFile(path.join(WIKI.SERVERPATH, 'modules/rendering', dir, 'definition.yml'), 'utf8')
|
||||
diskRenderers.push(yaml.safeLoad(def))
|
||||
}
|
||||
WIKI.data.renderers = diskRenderers.map(renderer => ({
|
||||
...renderer,
|
||||
props: commonHelper.parseModuleProps(renderer.props)
|
||||
}))
|
||||
}
|
||||
|
||||
static async refreshRenderersFromDisk() {
|
||||
let trx
|
||||
try {
|
||||
const dbRenderers = await WIKI.models.renderers.query()
|
||||
|
||||
// -> Fetch definitions from disk
|
||||
const rendererDirs = await fs.readdir(path.join(WIKI.SERVERPATH, 'modules/rendering'))
|
||||
let diskRenderers = []
|
||||
for (let dir of rendererDirs) {
|
||||
const def = await fs.readFile(path.join(WIKI.SERVERPATH, 'modules/rendering', dir, 'definition.yml'), 'utf8')
|
||||
diskRenderers.push(yaml.safeLoad(def))
|
||||
}
|
||||
WIKI.data.renderers = diskRenderers.map(renderer => ({
|
||||
...renderer,
|
||||
props: commonHelper.parseModuleProps(renderer.props)
|
||||
}))
|
||||
await WIKI.models.renderers.fetchDefinitions()
|
||||
|
||||
// -> Insert new Renderers
|
||||
let newRenderers = []
|
||||
|
@@ -107,6 +107,11 @@ module.exports = class Storage extends Model {
|
||||
target.fn.config = target.config
|
||||
target.fn.mode = target.mode
|
||||
await target.fn.init()
|
||||
// if (target.schedule) {
|
||||
// WIKI.scheduler.registerJob({
|
||||
// name:
|
||||
// }, target.fn.sync)
|
||||
// }
|
||||
}
|
||||
} catch (err) {
|
||||
WIKI.logger.warn(err)
|
||||
|
@@ -294,7 +294,7 @@ module.exports = class User extends Model {
|
||||
|
||||
static async loginTFA(opts, context) {
|
||||
if (opts.securityCode.length === 6 && opts.loginToken.length === 64) {
|
||||
let result = await WIKI.redis.get(`tfa:${opts.loginToken}`)
|
||||
let result = null // await WIKI.redis.get(`tfa:${opts.loginToken}`)
|
||||
if (result) {
|
||||
let userId = _.toSafeInteger(result)
|
||||
if (userId && userId > 0) {
|
||||
|
Reference in New Issue
Block a user