mirror of
https://github.com/codex-team/codex.docs.git
synced 2025-08-07 14:35:26 +02:00
Renamed flatArray model to pagesFlatArray, updated descriptions, renamed generate to regenerate, removed hardcoded key name in cache
This commit is contained in:
parent
c895f4d9fe
commit
bb2113cab9
5 changed files with 65 additions and 45 deletions
|
@ -3,7 +3,7 @@ import Alias from '../models/alias';
|
|||
import PagesOrder from './pagesOrder';
|
||||
import PageOrder from '../models/pageOrder';
|
||||
import HttpException from '../exceptions/httpException';
|
||||
import flatArray from '../models/flatArray';
|
||||
import PagesFlatArray from '../models/pagesFlatArray';
|
||||
|
||||
type PageDataFields = keyof PageData;
|
||||
|
||||
|
@ -196,7 +196,7 @@ class Pages {
|
|||
pagesAvailable[index] = null;
|
||||
pagesAvailable = Pages.removeChildren(pagesAvailable, item._id);
|
||||
});
|
||||
flatArray.generate();
|
||||
PagesFlatArray.regenerate();
|
||||
|
||||
return pagesAvailable;
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ class Pages {
|
|||
|
||||
alias.save();
|
||||
}
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
|
||||
return insertedPage;
|
||||
} catch (e) {
|
||||
|
@ -267,7 +267,7 @@ class Pages {
|
|||
Alias.markAsDeprecated(previousUri);
|
||||
}
|
||||
}
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
|
||||
return updatedPage;
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ class Pages {
|
|||
await alias.destroy();
|
||||
}
|
||||
const removedPage = page.destroy();
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
|
||||
return removedPage;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import PageOrder from '../models/pageOrder';
|
||||
import Page from '../models/page';
|
||||
import flatArray from '../models/flatArray';
|
||||
import PagesFlatArray from '../models/pagesFlatArray';
|
||||
|
||||
/**
|
||||
* @class PagesOrder
|
||||
|
@ -63,7 +63,7 @@ class PagesOrder {
|
|||
|
||||
order.push(childId);
|
||||
await order.save();
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,13 +78,13 @@ class PagesOrder {
|
|||
|
||||
oldParentOrder.remove(targetPageId);
|
||||
await oldParentOrder.save();
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
|
||||
const newParentOrder = await PageOrder.get(newParentId);
|
||||
|
||||
newParentOrder.push(targetPageId);
|
||||
await newParentOrder.save();
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -129,7 +129,7 @@ class PagesOrder {
|
|||
pageOrder.order = Array.from(new Set([...pageOrder.order, ...unordered]));
|
||||
pageOrder.putAbove(currentPageId, putAbovePageId);
|
||||
await pageOrder.save();
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -144,7 +144,7 @@ class PagesOrder {
|
|||
}
|
||||
|
||||
await order.destroy();
|
||||
await flatArray.generate();
|
||||
await PagesFlatArray.regenerate();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,56 +5,76 @@ import NodeCache from 'node-cache';
|
|||
// Create cache for flat array
|
||||
const cache = new NodeCache({ stdTTL: 120 });
|
||||
|
||||
const cacheKey = 'pagesFlatArray';
|
||||
|
||||
/**
|
||||
* @typedef {object} FlatArrayData
|
||||
* @property {string} id - page id
|
||||
* @property {string} parentId - page parent id
|
||||
* @property {string} rootId - page root id
|
||||
* @property {number} level - page level in sidebar
|
||||
* @property {string} title - page title
|
||||
* @property {string} uri - page uri
|
||||
* Element for pagesFlatArray
|
||||
*/
|
||||
export interface FlatArrayData {
|
||||
export interface PagesFlatArrayData {
|
||||
/**
|
||||
* Page id
|
||||
*/
|
||||
id?: string;
|
||||
|
||||
/**
|
||||
* Page parent id
|
||||
*/
|
||||
parentId?: string;
|
||||
|
||||
/**
|
||||
* id of parent with parent id '0'
|
||||
*/
|
||||
rootId?: string;
|
||||
|
||||
/**
|
||||
* Page level in sidebar view
|
||||
*/
|
||||
level?: number;
|
||||
|
||||
/**
|
||||
* Page title
|
||||
*/
|
||||
title?: string;
|
||||
|
||||
/**
|
||||
* Page uri
|
||||
*/
|
||||
uri?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @class FlatArray
|
||||
* @class FlatArray model
|
||||
* @class PagesFlatArray
|
||||
* @class PagesFlatArray model - flat array of pages, which are ordered like in sidebar
|
||||
*/
|
||||
class FlatArray {
|
||||
class PagesFlatArray {
|
||||
/**
|
||||
* Returns pages flat array
|
||||
*
|
||||
* @returns {Promise<Array<FlatArrayData>>}
|
||||
* @returns {Promise<Array<PagesFlatArrayData>>}
|
||||
*/
|
||||
public static async get(): Promise<Array<FlatArrayData>> {
|
||||
public static async get(): Promise<Array<PagesFlatArrayData>> {
|
||||
// Get flat array from cache
|
||||
let arr = cache.get('flatArray') as Array<FlatArrayData>;
|
||||
let arr = cache.get(cacheKey) as Array<PagesFlatArrayData>;
|
||||
|
||||
// Check is flat array consists in cache
|
||||
if (!arr) {
|
||||
arr = await this.generate();
|
||||
arr = await this.regenerate();
|
||||
}
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates flat array, saves it to cache, returns it
|
||||
* Generates new flat array, saves it to cache, returns it
|
||||
* Calls, when there is no pages flat array data in cache or when page or pageOrder data updates
|
||||
*
|
||||
* @returns {Promise<Array<FlatArrayData>>}
|
||||
* @returns {Promise<Array<PagesFlatArrayData>>}
|
||||
*/
|
||||
public static async generate(): Promise<Array<FlatArrayData>> {
|
||||
public static async regenerate(): Promise<Array<PagesFlatArrayData>> {
|
||||
const pages = await Page.getAll();
|
||||
const pagesOrders = await PageOrder.getAll();
|
||||
|
||||
let arr = new Array<FlatArrayData>();
|
||||
let arr = new Array<PagesFlatArrayData>();
|
||||
|
||||
// Get root order
|
||||
const rootOrder = pagesOrders.find( order => order.page == '0' );
|
||||
|
@ -70,7 +90,7 @@ class FlatArray {
|
|||
}
|
||||
|
||||
// Save generated flat array to cache
|
||||
cache.set('flatArray', arr);
|
||||
cache.set(cacheKey, arr);
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
@ -79,9 +99,9 @@ class FlatArray {
|
|||
* Returns previous page
|
||||
*
|
||||
* @param pageId - page id
|
||||
* @returns {Promise<FlatArrayData | undefined>}
|
||||
* @returns {Promise<PagesFlatArrayData | undefined>}
|
||||
*/
|
||||
public static async getPageBefore(pageId: string): Promise<FlatArrayData | undefined> {
|
||||
public static async getPageBefore(pageId: string): Promise<PagesFlatArrayData | undefined> {
|
||||
const arr = await this.get();
|
||||
|
||||
const pageIndex = arr.findIndex( (item) => item.id == pageId);
|
||||
|
@ -99,9 +119,9 @@ class FlatArray {
|
|||
* Returns next page
|
||||
*
|
||||
* @param pageId - page id
|
||||
* @returns {Promise<FlatArrayData | undefined>}
|
||||
* @returns {Promise<PagesFlatArrayData | undefined>}
|
||||
*/
|
||||
public static async getPageAfter(pageId: string): Promise<FlatArrayData | undefined> {
|
||||
public static async getPageAfter(pageId: string): Promise<PagesFlatArrayData | undefined> {
|
||||
const arr = await this.get();
|
||||
|
||||
const pageIndex = arr.findIndex( (item) => item.id == pageId );
|
||||
|
@ -122,11 +142,11 @@ class FlatArray {
|
|||
* @param level - page level in sidebar
|
||||
* @param pages - all pages
|
||||
* @param orders - all page orders
|
||||
* @returns {Promise<Array<FlatArrayData>>}
|
||||
* @returns {Promise<Array<PagesFlatArrayData>>}
|
||||
*/
|
||||
private static getChildrenFlatArray(pageId: string, level: number,
|
||||
pages: Array<Page>, orders: Array<PageOrder>): Array<FlatArrayData> {
|
||||
let arr: Array<FlatArrayData> = new Array<FlatArrayData>();
|
||||
pages: Array<Page>, orders: Array<PageOrder>): Array<PagesFlatArrayData> {
|
||||
let arr: Array<PagesFlatArrayData> = new Array<PagesFlatArrayData>();
|
||||
|
||||
const page = pages.find( item => item._id == pageId );
|
||||
|
||||
|
@ -155,4 +175,4 @@ class FlatArray {
|
|||
}
|
||||
}
|
||||
|
||||
export default FlatArray;
|
||||
export default PagesFlatArray;
|
|
@ -3,7 +3,7 @@ import Aliases from '../controllers/aliases';
|
|||
import Pages from '../controllers/pages';
|
||||
import Alias from '../models/alias';
|
||||
import verifyToken from './middlewares/token';
|
||||
import FlatArray from '../models/flatArray';
|
||||
import PagesFlatArray from '../models/pagesFlatArray';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
@ -33,8 +33,8 @@ router.get('*', verifyToken, async (req: Request, res: Response) => {
|
|||
|
||||
const pageParent = await page.getParent();
|
||||
|
||||
const previousPage = await FlatArray.getPageBefore(alias.id);
|
||||
const nextPage = await FlatArray.getPageAfter(alias.id);
|
||||
const previousPage = await PagesFlatArray.getPageBefore(alias.id);
|
||||
const nextPage = await PagesFlatArray.getPageAfter(alias.id);
|
||||
|
||||
res.render('pages/page', {
|
||||
page,
|
||||
|
|
|
@ -3,7 +3,7 @@ import Pages from '../controllers/pages';
|
|||
import PagesOrder from '../controllers/pagesOrder';
|
||||
import verifyToken from './middlewares/token';
|
||||
import allowEdit from './middlewares/locals';
|
||||
import FlatArray from '../models/flatArray';
|
||||
import PagesFlatArray from '../models/pagesFlatArray';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
@ -63,8 +63,8 @@ router.get('/page/:id', verifyToken, async (req: Request, res: Response, next: N
|
|||
|
||||
const pageParent = await page.parent;
|
||||
|
||||
const previousPage = await FlatArray.getPageBefore(pageId);
|
||||
const nextPage = await FlatArray.getPageAfter(pageId);
|
||||
const previousPage = await PagesFlatArray.getPageBefore(pageId);
|
||||
const nextPage = await PagesFlatArray.getPageAfter(pageId);
|
||||
|
||||
res.render('pages/page', {
|
||||
page,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue