import {IPage, ISearchParam, ISearchTask} from "/src-com";
import {commitSearchTask, executeSearch} from "./executeSearch";

export async function executeSearchTask(task: ISearchTask) {
	const param = {
		...{
			rwid: task.id,
			keyword: task.word?.replace(/^\s*"|"\s*$/g, '')
		},
		...task.params,
	} as ISearchParam;
	let page: IPage<any>, result, error = undefined;
	try {
		page = await executeSearch(param);
	} catch (e) {
		page || (page = {...param, dataList: []})
		error = page.error = e.message;
	}
	try {
		result = await commitSearchTask(page)
	} catch (e) {
		const arr = [`${error}\n${e.message}`];
		if (page.error) {
			arr.push(page.error);
		}
		error = arr.join('\n');
		page.error = error;
	}
	return {
		result,
		error,
		task,
		page: {
			dataList: [],
			...param,
			...page,
		},
	};
}