#ifndef CATALOG_H
#define CATALOG_H

#include "../persons/persons.h"
#include <string>
#include <vector>

class CyclistCatalog {
private:
  std::vector<Cyclist> cyclists_;

public:
  bool Load(const std::string &path);
  inline int Size() { return cyclists_.size(); }
  inline const std::vector<Cyclist> &Data() const { return cyclists_; }

  std::string GetTeam(std::string cyclistID) const;
  std::vector<Cyclist> GetByTeam(std::string team);
  std::vector<Cyclist> GetYoungest();
  CyclistCatalog& operator<<(const Cyclist& ciclista);
  void Add(Cyclist ciclista);
};

class DirectorCatalog {
private:
  std::vector<Director> directors_;

public:
  bool Load(const std::string &path);
  inline int Size() const { return directors_.size(); }
  inline const std::vector<Director> &Data() const { return directors_; };
};

#endif