From 067cc9201f89936a98ba31f3d51e9cb59799c998 Mon Sep 17 00:00:00 2001 From: Ishaan Shah <70190533+ishaan812@users.noreply.github.com> Date: Sun, 5 Nov 2023 15:11:18 +0530 Subject: [PATCH] Updates for Extendability to other schemas --- src/app.ts | 18 ++++-- .../{searchutils.ts => openAPISearchUtils.ts} | 4 +- src/searchtools/search.ts | 58 +++++++++---------- 3 files changed, 42 insertions(+), 38 deletions(-) rename src/searchtools/{searchutils.ts => openAPISearchUtils.ts} (96%) diff --git a/src/app.ts b/src/app.ts index 66644f2..5f5a811 100644 --- a/src/app.ts +++ b/src/app.ts @@ -11,6 +11,7 @@ import { fileURLToPath } from 'url'; import path from 'path'; import Converter from 'openapi-to-postmanv2'; import { makePostmanCollection } from './utils.js'; +import { openAPIQueryBuilder } from './searchtools/openAPISearchUtils.js'; const CustomOctokit = Octokit.plugin(throttling as any, retry as any); @@ -44,12 +45,14 @@ const octokit = new CustomOctokit({ const esHost = process.env.ES_HOST || 'localhost'; const esClient = new es.Client({ host: 'http://' + esHost + ':9200', + // uncomment for debugging // log: 'trace', }); const app = express(); app.set('view engine', 'pug'); app.set('views', path.join(rootDir, 'templates')); + app.get('/search', async (_req, _res) => { const query = _req.query.q as string; const results = await passiveSearch(query); @@ -62,12 +65,16 @@ app.post('/openapi', async (_req, _res) => { const User = _req.query.user as string; const Prompt = _req.query.prompt as string; const RootQuery = _req.query.rootquery as string; + const query = await openAPIQueryBuilder( + Prompt, + Repository, + Organisation, + User, + RootQuery, + ); const results = await activeSearch( - Prompt as string, - Repository as string, - Organisation as string, - User as string, - RootQuery as string, + query as string, + 'openapi' ); _res.send(results); }); @@ -82,7 +89,6 @@ app.use('/ping', async (_req, _res) => { _res.send(response); }); - app.get('/openapi/:id', async (_req, _res) => { const id = _req.params.id; GetDocumentWithId(id).then((response) => { diff --git a/src/searchtools/searchutils.ts b/src/searchtools/openAPISearchUtils.ts similarity index 96% rename from src/searchtools/searchutils.ts rename to src/searchtools/openAPISearchUtils.ts index 567fddd..9e2f4bd 100644 --- a/src/searchtools/searchutils.ts +++ b/src/searchtools/openAPISearchUtils.ts @@ -34,7 +34,7 @@ export async function getFileContents( return response; } -export async function queryBuilder( +export async function openAPIQueryBuilder( prompt: string, repo: string, organisation: string, @@ -73,7 +73,7 @@ export async function queryBuilder( return query; } -export async function ValidateandStoreFiles(files: any[]): Promise { +export async function openAPIValidateandStoreFiles(files: any[]): Promise { if (files.length == 0) { return; } diff --git a/src/searchtools/search.ts b/src/searchtools/search.ts index 41b5414..f5318f2 100644 --- a/src/searchtools/search.ts +++ b/src/searchtools/search.ts @@ -1,26 +1,17 @@ -import { queryBuilder, ValidateandStoreFiles } from './searchutils.js'; +import { openAPIValidateandStoreFiles } from './openAPISearchUtils.js'; import { octokit, esClient } from '../app.js'; let processCount = 0; let finishedCount = 0; export async function activeSearch( - prompt: string, - repo: string, - organisation: string, - username: string, - rootquery: string, + query: string, + type: string, ): Promise { - const query = await queryBuilder( - prompt, - repo, - organisation, - username, - rootquery, - ); + console.log(type) + console.info('Query: ' + query); let files = []; let validFiles = []; - console.info('Query: ' + query); await octokit.paginate( octokit.rest.search.code, { @@ -34,15 +25,19 @@ export async function activeSearch( console.info( 'ValidateandStoreFiles Process Number ' + processCount + ' Started', ); - ValidateandStoreFiles(files).then((validatedFiles) => { - validFiles = validFiles.concat(validatedFiles); - finishedCount++; - console.info( - 'ValidateandStoreFiles Process Number ' + - finishedCount + - ' Finished', - ); - }); + switch (type) { + case 'openapi': + openAPIValidateandStoreFiles(files).then((validatedFiles) => { + validFiles = validFiles.concat(validatedFiles); + finishedCount++; + console.info( + 'ValidateandStoreFiles Process Number ' + + finishedCount + + ' Finished', + ); + }); + break; + } files = []; } }, @@ -52,13 +47,16 @@ export async function activeSearch( console.info( 'ValidateandStoreFiles Process Number ' + processCount + ' Started', ); - ValidateandStoreFiles(files).then((validatedFiles) => { - validFiles = validFiles.concat(validatedFiles); - console.info( - 'ValidateandStoreFiles Process Number ' + finishedCount + ' Finished', - ); - finishedCount++; - }); + switch (type) { + case 'openapi': + openAPIValidateandStoreFiles(files).then((validatedFiles) => { + validFiles = validFiles.concat(validatedFiles); + console.info( + 'ValidateandStoreFiles Process Number ' + finishedCount + ' Finished', + ); + finishedCount++; + }); + } while (processCount > finishedCount) { await new Promise((r) => setTimeout(r, 5000)); console.info(