fabasoad/business-card

View on GitHub
src/scripts/technologies/TechnologyStorage.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { Technology, TechnologyProvider } from './types'
import TechnologyProviderDefault from './TechnologyProviderDefault'

export default class TechnologyStorage {
  private readonly provider: TechnologyProvider

  constructor(provider: TechnologyProvider = TechnologyProviderDefault) {
    this.provider = provider
  }

  findBySkill(isSkill: boolean): Array<Technology> {
    const result = new Array<Technology>()
    for (const technology of this.provider.items.values()) {
      if (technology.isSkill === isSkill) {
        result.push(technology)
      }
    }
    return result
  }

  findByName(name: string): Technology {
    return this.provider.items.has(name)
      ? this.provider.items.get(name)
      : { name, title: name }
  }
}