Remove unnecessary overloads

pull/75/head
MillenniumEarl 2021-03-04 11:21:21 +01:00
parent 8036372d1f
commit 05e18eccd5
2 changed files with 16 additions and 34 deletions

View File

@ -7,35 +7,26 @@ import fetchThreadHandiworkURLs from "./fetch-thread.js";
import HandiworkSearchQuery from "../classes/query/handiwork-search-query.js";
import LatestSearchQuery from "../classes/query/latest-search-query.js";
import ThreadSearchQuery from "../classes/query/thread-search-query.js";
import { IQuery } from "../interfaces.js";
//#region Public methods
export default async function executeQuery(query: LatestSearchQuery, limit: number): Promise<string[]>
export default async function executeQuery(query: ThreadSearchQuery, limit: number): Promise<string[]>
export default async function executeQuery(query: HandiworkSearchQuery, limit: number): Promise<string[]>
/**
* @param query Query used for the search
* @param limit Maximum number of items to get. Default: 30
* @returns URLs of the fetched games
*/
export default async function executeQuery(query: any, limit: number = 30): Promise<string[]> {
// Local variables
const searchMap = {
"latest": fetchLatestHandiworkURLs,
"thread": fetchThreadHandiworkURLs,
"handiwork": fetchHandiworkURLs,
export default async function getURLsFromQuery(query: IQuery, limit: number = 30): Promise<string[]> {
switch (query.itype) {
case "HandiworkSearchQuery":
return await fetchHandiworkURLs(query as HandiworkSearchQuery, limit);
case "LatestSearchQuery":
return await fetchLatestHandiworkURLs(query as LatestSearchQuery, limit);
case "ThreadSearchQuery":
return await fetchThreadHandiworkURLs(query as ThreadSearchQuery, limit);
default:
throw Error(`Invalid query type: ${query.itype}`);
}
}
// Find the key for the mapping dict
const key = query instanceof LatestSearchQuery ?
"latest" :
(query instanceof ThreadSearchQuery ?
"thread" :
"handiwork");
// Fetch and return the urls
return searchMap[key](query, limit);
}
//#endregion

View File

@ -1,18 +1,9 @@
"use strict";
// Modules from file
import { IBasic } from "./interfaces.js";
import HandiworkSearchQuery from "./classes/query/handiwork-search-query.js";
import LatestSearchQuery from "./classes/query/latest-search-query.js";
import ThreadSearchQuery from "./classes/query/thread-search-query.js";
import { IBasic, IQuery } from "./interfaces.js";
import getHandiworkInformation from "./scrape-data/handiwork-parse.js";
import executeQuery from "./fetch-data/fetch-query.js";
export async function search<T extends IBasic>(query: LatestSearchQuery, limit: number): Promise<T[]>
export async function search<T extends IBasic>(query: HandiworkSearchQuery, limit: number): Promise<T[]>
export async function search<T extends IBasic>(query: ThreadSearchQuery, limit: number): Promise<T[]>
import getURLsFromQuery from "./fetch-data/fetch-query.js";
/**
* Gets the handiworks that match the passed parameters.
@ -20,9 +11,9 @@ export async function search<T extends IBasic>(query: ThreadSearchQuery, limit:
* @param {Number} limit
* Maximum number of items to get. Default: 30
*/
export default async function search<T extends IBasic>(query: any, limit: number = 30): Promise<T[]> {
export default async function search<T extends IBasic>(query: IQuery, limit: number = 30): Promise<T[]> {
// Fetch the URLs
const urls: string[] = await executeQuery(query, limit);
const urls: string[] = await getURLsFromQuery(query, limit);
// Fetch the data
const results = urls.map((url, idx) => {