#ifndef ARTISTREPOSITORY_H_ #define ARTISTREPOSITORY_H_ #include #include #include #include "database/BaseRepository.h" #include "model/Models.h" #include "type/ArtistFilter.h" namespace database { class ArtistRepository : public BaseRepository { public: ArtistRepository(const model::BinaryPath&); std::vector retrieveRecords(); std::pair retrieveRecordWithSongCount( model::Artist&, type::ArtistFilter); model::Artist retrieveRecord(model::Artist&, type::ArtistFilter); bool doesArtistExist(const model::Artist&, type::ArtistFilter); void saveRecord(const model::Artist&); void deleteArtist(const model::Artist&, type::ArtistFilter); private: std::vector parseRecords(MYSQL_STMT*); std::pair parseRecordWithSongCount(MYSQL_STMT*); std::shared_ptr valueBind(model::Artist&, std::tuple&); std::shared_ptr valueBindWithSongCount(model::Artist&, std::tuple&, int&); std::tuple metadataBuffer(); model::Artist parseRecord(MYSQL_STMT*); }; } #endif