import { Provider } from './types';

export default class MapProvider {
  private providers: Record<string, Provider>;

  constructor() {
    this.providers = {};
  }

  addProvider(provider: Provider): string {
    const id = Math.random().toString(36).substr(2);
    this.providers[id] = provider;
    return id;
  }

  deleteProvider(id: string): void {
    delete this.providers[id];
  }

  getProviders(ids: Array<string>): Array<Provider> {
    const providers = ids.map((id) => this.providers[id]);
    return providers.length
      ? providers
      : Object.keys(this.providers).reduce((prev: Array<Provider>, curr: string): Array<Provider> => {
          const provider = this.providers[curr];
          return [...prev, provider];
        }, []);
  }
}
