import { ISearchProvider, StationId } from '../type';
|
import { Provider2Mercari } from './Provider2Mercari';
|
import { Provider4YahooAuction } from './Provider4YahooAuction';
|
import { Provider5Melonbooks } from './Provider5Melonbooks';
|
import { Provider6Toranoana } from './Provider6Toranoana';
|
import { Provider7Booth } from './Provider7Booth';
|
import { Provider8Mandarake } from './Provider8Mandarake';
|
import { Provider9Fril } from './Provider9Fril';
|
import { Provider10YahooFleamarket } from './Provider10YahooFleamarket';
|
|
// 服务提供者实例的缓存
|
const providerCache = new Map<StationId, ISearchProvider>();
|
|
// 预先创建并缓存所有服务提供者实例
|
function initializeProviders() {
|
const providers: ISearchProvider[] = [
|
new Provider2Mercari(),
|
new Provider4YahooAuction(),
|
new Provider5Melonbooks(),
|
new Provider6Toranoana(),
|
new Provider7Booth(),
|
new Provider8Mandarake(),
|
new Provider9Fril(),
|
new Provider10YahooFleamarket(),
|
];
|
|
for (const provider of providers) {
|
providerCache.set(provider.stationId, provider);
|
}
|
}
|
|
// 初始化所有服务提供者
|
initializeProviders();
|
|
/**
|
* 根据站点 ID 获取对应的搜索服务提供者
|
* @param stationId 站点 ID
|
* @returns 返回一个 ISearchProvider 实例,如果找不到则抛出错误
|
*/
|
export function getSearchProvider(stationId: StationId): ISearchProvider {
|
const provider = providerCache.get(stationId);
|
if (!provider) {
|
throw new Error(`No search provider found for stationId: ${stationId}`);
|
}
|
return provider;
|
}
|