From 26717a14a66f32a3fde23d5b1b91981181937d2f Mon Sep 17 00:00:00 2001 From: Satbir Singh Date: Fri, 29 May 2020 12:42:35 +0530 Subject: [PATCH] Updated algolia for the order. --- app/client/gitbook-algolia-lambda.js | 175 +++++++++++++++------------ 1 file changed, 100 insertions(+), 75 deletions(-) diff --git a/app/client/gitbook-algolia-lambda.js b/app/client/gitbook-algolia-lambda.js index 5cd91a6189..993644ee09 100644 --- a/app/client/gitbook-algolia-lambda.js +++ b/app/client/gitbook-algolia-lambda.js @@ -1,8 +1,8 @@ var https = require("https"); -const algoliasearch = require("algoliasearch"); +const algoliasearch = require('algoliasearch'); -const client = algoliasearch("AZ2Z9CJSJ0", "e92300d4e8dbaf2cbaa9ebbbeb4e06e6"); -const index = client.initIndex("test_appsmith"); +const client = algoliasearch('AZ2Z9CJSJ0', 'e92300d4e8dbaf2cbaa9ebbbeb4e06e6'); +const index = client.initIndex('test_appsmith'); var options = { headers: { @@ -14,32 +14,28 @@ var options = { console.log("Loading function"); + function getPage(pageId) { return new Promise((resolve, reject) => { - https.get( - `https://api-beta.gitbook.com/v1/spaces/-Lzuzdhj8LjrQPaeyCxr/content/v/master/id/${pageId}?format=markdown`, - options, - res => { - res.setEncoding("utf8"); - let rawData = ""; - res.on("data", chunk => { - rawData += chunk; - }); - res.on("end", () => { - try { - const parsedData = JSON.parse(rawData); - resolve(parsedData); - } catch (e) { - reject(e); - console.error(e.message); - } - }); - }, - ); + https.get(`https://api-beta.gitbook.com/v1/spaces/-Lzuzdhj8LjrQPaeyCxr/content/v/master/id/${pageId}?format=markdown`, options, (res) => { + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', (chunk) => { rawData += chunk; }); + res.on('end', () => { + try { + const parsedData = JSON.parse(rawData); + resolve(parsedData); + } catch (e) { + reject(e) + console.error(e.message); + } + }); + }) }); } -const pages = []; +const pages = [] + function pushChildPages(masterPage) { if (masterPage.pages) { @@ -52,65 +48,94 @@ function pushChildPages(masterPage) { } } -exports.handler = async event => { +const orderArr = [{ + path: "master/quick-start", + order: 0, +}, { + path: "master/core-concepts/building-the-ui", + order: 1 +}, { + path: "master/core-concepts/building-the-ui/displaying-api-data", + order: 2 +}, { + path: "master/core-concepts/apis", + order: 3 +}, { + path: "master/core-concepts/apis/taking-inputs-from-widgets", + order: 4 +}] + +function swap(arr, index1, index2) { + let x = arr[index1] + arr[index1] = arr[index2] + arr[index2] = x; +} + +exports.handler = async (event) => { const response = await new Promise((resolve, reject) => { - const req = https.get( - "https://api-beta.gitbook.com/v1/spaces/-Lzuzdhj8LjrQPaeyCxr/content", - options, - res => { - res.setEncoding("utf8"); - let rawData = ""; - res.on("data", chunk => { - rawData += chunk; - }); - res.on("end", () => { - try { - const parsedData = JSON.parse(rawData); + const req = https.get("https://api-beta.gitbook.com/v1/spaces/-Lzuzdhj8LjrQPaeyCxr/content", options, (res) => { + res.setEncoding('utf8'); + let rawData = ''; + res.on('data', (chunk) => { rawData += chunk; }); + res.on('end', () => { + try { + const parsedData = JSON.parse(rawData); + let masterPage = parsedData.variants[0].page; - let masterPage = parsedData.variants[0].page; + pushChildPages(masterPage); + masterPage.pages = undefined; - pushChildPages(masterPage); - masterPage.pages = undefined; + pages.push(masterPage); - pages.push(masterPage); + let promises = pages.map(page => page.uid).map(getPage); + Promise.all(promises).then(updatedPages => { + updatedPages.forEach((page, index) => { + page.path = pages[index].path; + page.pages = undefined; + page.objectID = page.uid; + if (page.path === "master/changelog") { + page.document = undefined + } + }); - let promises = pages.map(page => page.uid).map(getPage); - Promise.all(promises).then(updatedPages => { - updatedPages.forEach((page, index) => { - page.path = pages[index].path; - page.pages = undefined; - page.objectID = page.uid; - }); + orderArr.forEach(order => { + let index = updatedPages.findIndex(i => i.path === order.path) + if (index !== -1) { + swap(updatedPages, index, order.order) + } + }) + updatedPages = updatedPages.map((item, index) => { return { ...item, defaultOrder: index } }) + + + // resolve({ + // statusCode: 200, + // body: JSON.stringify(updatedPages) + // }) + + index.replaceAllObjects(updatedPages, { + autoGenerateObjectIDIfNotExist: true + }).then(({ objectIDs }) => { + console.log(objectIDs); resolve({ statusCode: 200, - body: JSON.stringify(updatedPages), - }); - - // index.replaceAllObjects(updatedPages, { - // autoGenerateObjectIDIfNotExist: true - // }).then(({ objectIDs }) => { - // console.log(objectIDs); - // resolve({ - // statusCode: 200, - // body: JSON.stringify(updatedPages) - // }) - // }).catch(e => { - // reject({ - // statusCode: 500, - // body: 'Algolia upload failed.' - // }) - // }) - }); - } catch (e) { - reject({ - statusCode: 500, - body: "Most probably gitbook getPage apis failed", - }); - } - }); - }, - ); + body: JSON.stringify(updatedPages) + }) + }).catch(e => { + reject({ + statusCode: 500, + body: 'Algolia upload failed.' + }) + }) + }); + } catch (e) { + reject({ + statusCode: 500, + body: 'Most probably gitbook getPage apis failed' + }) + } + }); + }); }); return response;