From d44a5bb1bcbc748763d8a3f8c25ea24733913c69 Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Sun, 1 Sep 2019 13:54:16 -0400 Subject: [PATCH] Added Model namespace --- include/database/base_repository.h | 4 +- include/database/coverArtRepository.h | 8 +- include/database/songRepository.h | 12 +-- include/managers/coverArtManager.h | 2 +- include/managers/directory_manager.h | 11 +-- include/managers/song_manager.h | 8 +- include/managers/token_manager.h | 6 +- include/models/models.h | 131 +++++++++++++------------ include/utilities/imageFile.h | 24 ----- include/utilities/metadata_retriever.h | 6 +- src/controller/songController.hpp | 8 +- src/database/base_repository.cpp | 2 +- src/database/coverArtRepository.cpp | 10 +- src/database/songRepository.cpp | 18 ++-- src/managers/coverArtManager.cpp | 4 +- src/managers/directory_manager.cpp | 52 +--------- src/managers/song_manager.cpp | 10 +- src/managers/token_manager.cpp | 12 +-- src/utilities/metadata_retriever.cpp | 8 +- 19 files changed, 131 insertions(+), 205 deletions(-) diff --git a/include/database/base_repository.h b/include/database/base_repository.h index d2f6269..dcc3527 100644 --- a/include/database/base_repository.h +++ b/include/database/base_repository.h @@ -14,11 +14,11 @@ public: base_repository(const std::string&); protected: MYSQL* setup_mysql_connection(); - MYSQL* setup_mysql_connection(database_connection); + MYSQL* setup_mysql_connection(Model::database_connection); MYSQL_RES* perform_mysql_query(MYSQL*, const std::string&); - database_connection details; + Model::database_connection details; private: void intitalizeDetails(); diff --git a/include/database/coverArtRepository.h b/include/database/coverArtRepository.h index adc91eb..2add698 100644 --- a/include/database/coverArtRepository.h +++ b/include/database/coverArtRepository.h @@ -12,12 +12,12 @@ class coverArtRepository : public base_repository public: coverArtRepository(const std::string&); - Cover retrieveRecord(Cover&, coverFilter); + Model::Cover retrieveRecord(Model::Cover&, coverFilter); - void deleteRecord(const Cover&); - void saveRecord(const Cover&); + void deleteRecord(const Model::Cover&); + void saveRecord(const Model::Cover&); private: - Cover parseRecord(MYSQL_RES*); + Model::Cover parseRecord(MYSQL_RES*); }; #endif diff --git a/include/database/songRepository.h b/include/database/songRepository.h index f0747cd..ee4ea10 100644 --- a/include/database/songRepository.h +++ b/include/database/songRepository.h @@ -15,16 +15,16 @@ class songRepository : public base_repository public: songRepository(const std::string&); - std::vector retrieveRecords(); + std::vector retrieveRecords(); - Song retrieveRecord(Song&, songFilter); + Model::Song retrieveRecord(Model::Song&, songFilter); - void deleteRecord(const Song&); - void saveRecord(const Song&); + void deleteRecord(const Model::Song&); + void saveRecord(const Model::Song&); private: - std::vector parseRecords(MYSQL_RES*); + std::vector parseRecords(MYSQL_RES*); - Song parseRecord(MYSQL_RES*); + Model::Song parseRecord(MYSQL_RES*); }; #endif diff --git a/include/managers/coverArtManager.h b/include/managers/coverArtManager.h index 9e5479a..58c4cec 100644 --- a/include/managers/coverArtManager.h +++ b/include/managers/coverArtManager.h @@ -10,7 +10,7 @@ class coverArtManager public: coverArtManager(const std::string&); - Cover saveCover(const Song&, std::string&, const std::string&); + Model::Cover saveCover(const Model::Song&, std::string&, const std::string&); private: std::string path; }; diff --git a/include/managers/directory_manager.h b/include/managers/directory_manager.h index e994d6c..af3ca37 100644 --- a/include/managers/directory_manager.h +++ b/include/managers/directory_manager.h @@ -12,24 +12,19 @@ class directory_manager { public: - static std::string create_directory_process(Song, const std::string&); + static std::string create_directory_process(Model::Song, const std::string&); static std::string configPath(std::string_view); static std::string contentOfPath(std::string_view); static nlohmann::json credentialConfigContent(const std::string&); static nlohmann::json databaseConfigContent(const std::string&); static nlohmann::json pathConfigContent(const std::string&); - // Return Cover instead - //std::string read_cover_art(const std::string&); - - //void copy_stock_to_root(const std::string&, const std::string&); - //void copy_song_to_path(const std::string&, const std::string&); void delete_cover_art_file(const std::string&, const std::string&); - static void delete_directories(Song, const std::string&); + static void delete_directories(Model::Song, const std::string&); private: - void delete_song(const Song); + void delete_song(const Model::Song); }; #endif diff --git a/include/managers/song_manager.h b/include/managers/song_manager.h index 7e7a76e..e12a87c 100644 --- a/include/managers/song_manager.h +++ b/include/managers/song_manager.h @@ -13,12 +13,12 @@ class song_manager public: song_manager(std::string&); - void saveSong(Song&); - void deleteSong(Song&); + void saveSong(Model::Song&); + void deleteSong(Model::Song&); - static void printSong(const Song&); + static void printSong(const Model::Song&); private: - void saveSongTemp(Song&); + void saveSongTemp(Model::Song&); std::string exe_path; }; diff --git a/include/managers/token_manager.h b/include/managers/token_manager.h index f8bcbec..eafc9a5 100644 --- a/include/managers/token_manager.h +++ b/include/managers/token_manager.h @@ -16,12 +16,12 @@ class token_manager public: token_manager(); - loginResult retrieve_token(); - loginResult retrieve_token(std::string_view); + Model::loginResult retrieve_token(); + Model::loginResult retrieve_token(std::string_view); bool is_token_valid(std::string&, Scope); private: - auth_credentials parse_auth_credentials(std::string_view); + Model::auth_credentials parse_auth_credentials(std::string_view); std::vector extract_scopes(const jwt::decoded_jwt&&); std::pair> fetch_auth_header(const std::string&); diff --git a/include/models/models.h b/include/models/models.h index 3a045c0..b755ed5 100644 --- a/include/models/models.h +++ b/include/models/models.h @@ -4,77 +4,78 @@ #include #include -struct Song +namespace Model { - int id; - std::string title; - std::string artist; - std::string album; - std::string genre; - int year; - int duration; - int track; - int disc; - std::string songPath; - std::vector data; - int coverArtId; -}; + struct Song + { + int id; + std::string title; + std::string artist; + std::string album; + std::string genre; + int year; + int duration; + int track; + int disc; + std::string songPath; + std::vector data; + int coverArtId; + }; -struct Cover -{ - int id; - std::string songTitle; - std::string imagePath; - // Not being used but it should be - std::vector data; -}; + struct Album + { + int id; + std::string title; + int year; + std::vector songs; + }; -struct LoginRes -{ - int UserId; - char Username[1024]; - char Token[1024]; - char TokenType[1024]; - char Message[1024]; - int Expiration; -}; + struct Cover + { + int id; + std::string songTitle; + std::string imagePath; + // Not being used but it should be + std::vector data; + }; -struct loginResult -{ - int user_id; - std::string username; - std::string access_token; - std::string token_type; - std::string message; - int expiration; -}; + struct LoginRes + { + int UserId; + char Username[1024]; + char Token[1024]; + char TokenType[1024]; + char Message[1024]; + int Expiration; + }; -struct auth_credentials -{ - std::string domain; - std::string api_identifier; - std::string client_id; - std::string client_secret; - std::string uri; - std::string endpoint; -}; + struct loginResult + { + int user_id; + std::string username; + std::string access_token; + std::string token_type; + std::string message; + int expiration; + }; -struct database_connection -{ - std::string server; - std::string username; - std::string password; - std::string database; -}; + struct auth_credentials + { + std::string domain; + std::string api_identifier; + std::string client_id; + std::string client_secret; + std::string uri; + std::string endpoint; + }; -struct TokenReq -{ - char ClientId[1024]; - char ClientSecret[1024]; - char Audience[1024]; - char GrantType[1024]; - char URI[1024]; - char Endpoint[1024]; -}; + struct database_connection + { + std::string server; + std::string username; + std::string password; + std::string database; + }; +} #endif diff --git a/include/utilities/imageFile.h b/include/utilities/imageFile.h index d6d5e86..9e95cdd 100644 --- a/include/utilities/imageFile.h +++ b/include/utilities/imageFile.h @@ -1,45 +1,21 @@ #include -//#include #include -//#include -//#include -//#include #include -//#include #include -//#include #include -//#include #include -//#include #include -//#include #include -//#include #include -//#include #include class imageFile : public TagLib::File { public: imageFile(const char *file); - /** - imageFile(const char *file) : TagLib::File(file) - { - - } - */ TagLib::ByteVector data(); - /** - TagLib::ByteVector data() - { - return readBlock(length()); - } - */ - private: virtual TagLib::Tag *tag() const { return 0; } diff --git a/include/utilities/metadata_retriever.h b/include/utilities/metadata_retriever.h index 3a3760b..4801216 100644 --- a/include/utilities/metadata_retriever.h +++ b/include/utilities/metadata_retriever.h @@ -9,10 +9,10 @@ class metadata_retriever { public: - Song retrieve_metadata(std::string&); - Cover update_cover_art(const Song&, Cover& cov, const std::string&); + Model::Song retrieve_metadata(std::string&); + Model::Cover update_cover_art(const Model::Song&, Model::Cover& cov, const std::string&); - void update_metadata(Song updated_song, const Song old_song); + void update_metadata(Model::Song updated_song, const Model::Song old_song); private: }; diff --git a/src/controller/songController.hpp b/src/controller/songController.hpp index 4e5c43d..6c203a5 100644 --- a/src/controller/songController.hpp +++ b/src/controller/songController.hpp @@ -66,7 +66,7 @@ public: std::vector data(buff.get(), buff.get() + buffSize); - Song sng; + Model::Song sng; sng.data = std::move(data); song_manager s_mgr(m_exe_path); @@ -108,7 +108,7 @@ public: PATH(Int32, id)) { songRepository songRepo(m_exe_path); - Song songDb; + Model::Song songDb; songDb.id = id; songDb = songRepo.retrieveRecord(songDb, songFilter::id); @@ -131,7 +131,7 @@ public: PATH(Int32, id)) { songRepository songRepo(m_exe_path); - Song songDb; + Model::Song songDb; songDb.id = id; songDb = songRepo.retrieveRecord(songDb, songFilter::id); @@ -156,7 +156,7 @@ public: ENDPOINT("DELETE", "api/v1/song/data/{id}", songDelete, PATH(Int32, id)) { - Song song; + Model::Song song; song.id = id; song_manager sngMgr(m_exe_path); diff --git a/src/database/base_repository.cpp b/src/database/base_repository.cpp index c55b91f..c405461 100644 --- a/src/database/base_repository.cpp +++ b/src/database/base_repository.cpp @@ -25,7 +25,7 @@ MYSQL* base_repository::setup_mysql_connection() return conn; } -MYSQL* base_repository::setup_mysql_connection(database_connection details) +MYSQL* base_repository::setup_mysql_connection(Model::database_connection details) { MYSQL *connection = mysql_init(NULL); diff --git a/src/database/coverArtRepository.cpp b/src/database/coverArtRepository.cpp index d2d8455..0e3b20a 100644 --- a/src/database/coverArtRepository.cpp +++ b/src/database/coverArtRepository.cpp @@ -8,7 +8,7 @@ coverArtRepository::coverArtRepository(const std::string& path) : base_repository(path) { } -Cover coverArtRepository::retrieveRecord(Cover& cov, coverFilter filter = coverFilter::id) +Model::Cover coverArtRepository::retrieveRecord(Model::Cover& cov, coverFilter filter = coverFilter::id) { std::stringstream qry; auto conn = setup_mysql_connection(); @@ -45,7 +45,7 @@ Cover coverArtRepository::retrieveRecord(Cover& cov, coverFilter filter = coverF return covDb; } -void coverArtRepository::deleteRecord(const Cover& cov) +void coverArtRepository::deleteRecord(const Model::Cover& cov) { auto conn = setup_mysql_connection(); const std::string query("DELETE FROM CoverArt WHERE CoverArtId = " + std::to_string(cov.id)); @@ -55,7 +55,7 @@ void coverArtRepository::deleteRecord(const Cover& cov) mysql_close(conn); } -void coverArtRepository::saveRecord(const Cover& cov) +void coverArtRepository::saveRecord(const Model::Cover& cov) { auto conn = setup_mysql_connection(); @@ -93,10 +93,10 @@ void coverArtRepository::saveRecord(const Cover& cov) std::cout << "done" << std::endl; } -Cover coverArtRepository::parseRecord(MYSQL_RES *results) +Model::Cover coverArtRepository::parseRecord(MYSQL_RES *results) { std::cout << "parsing record" << std::endl; - Cover cov; + Model::Cover cov; auto fieldNum = mysql_num_fields(results); MYSQL_ROW row = mysql_fetch_row(results); diff --git a/src/database/songRepository.cpp b/src/database/songRepository.cpp index 593f5ca..86c5f0c 100644 --- a/src/database/songRepository.cpp +++ b/src/database/songRepository.cpp @@ -10,7 +10,7 @@ songRepository::songRepository(const std::string& path) : base_repository(path) { } -std::vector songRepository::retrieveRecords() +std::vector songRepository::retrieveRecords() { auto conn = setup_mysql_connection(); const std::string query = "SELECT * FROM Song"; @@ -24,7 +24,7 @@ std::vector songRepository::retrieveRecords() return songs; } -Song songRepository::retrieveRecord(Song& song, songFilter filter) +Model::Song songRepository::retrieveRecord(Model::Song& song, songFilter filter) { std::stringstream qry; auto conn = setup_mysql_connection(); @@ -57,7 +57,7 @@ Song songRepository::retrieveRecord(Song& song, songFilter filter) return song; } -void songRepository::deleteRecord(const Song& song) +void songRepository::deleteRecord(const Model::Song& song) { auto conn = setup_mysql_connection(); auto status = 0; @@ -69,7 +69,7 @@ void songRepository::deleteRecord(const Song& song) mysql_close(conn); } -void songRepository::saveRecord(const Song& song) +void songRepository::saveRecord(const Model::Song& song) { auto conn = setup_mysql_connection(); auto status = 0; @@ -148,16 +148,16 @@ void songRepository::saveRecord(const Song& song) std::cout << "done inserting song record" << std::endl; } -std::vector songRepository::parseRecords(MYSQL_RES* results) +std::vector songRepository::parseRecords(MYSQL_RES* results) { auto fieldNum = mysql_num_fields(results); auto numRows = mysql_num_rows(results); - std::vector songs; + std::vector songs; songs.reserve(numRows); for (MYSQL_ROW row = nullptr; (row = mysql_fetch_row(results)) != nullptr; ) { - Song song; + Model::Song song; for (auto i = 0; i != fieldNum; ++i) { switch (i) { @@ -203,9 +203,9 @@ std::vector songRepository::parseRecords(MYSQL_RES* results) return songs; } -Song songRepository::parseRecord(MYSQL_RES* results) +Model::Song songRepository::parseRecord(MYSQL_RES* results) { - Song song; + Model::Song song; auto fieldNum = mysql_num_fields(results); MYSQL_ROW row = mysql_fetch_row(results); diff --git a/src/managers/coverArtManager.cpp b/src/managers/coverArtManager.cpp index c2fa75d..f732b25 100644 --- a/src/managers/coverArtManager.cpp +++ b/src/managers/coverArtManager.cpp @@ -8,10 +8,10 @@ coverArtManager::coverArtManager(const std::string& configPath) : path(configPat { } -Cover coverArtManager::saveCover(const Song& song, std::string& rootPath, const std::string& stockCoverPath) +Model::Cover coverArtManager::saveCover(const Model::Song& song, std::string& rootPath, const std::string& stockCoverPath) { metadata_retriever meta; - Cover cov; + Model::Cover cov; cov.imagePath = rootPath; cov = meta.update_cover_art(song, cov, stockCoverPath); cov.songTitle = song.title; diff --git a/src/managers/directory_manager.cpp b/src/managers/directory_manager.cpp index 0c5f97c..c8b8acc 100644 --- a/src/managers/directory_manager.cpp +++ b/src/managers/directory_manager.cpp @@ -7,7 +7,7 @@ namespace fs = std::filesystem; -std::string directory_manager::create_directory_process(Song song, const std::string& root_path) +std::string directory_manager::create_directory_process(Model::Song song, const std::string& root_path) { auto curr_path = fs::path(root_path); @@ -74,52 +74,6 @@ nlohmann::json directory_manager::pathConfigContent(const std::string& exe_path) return nlohmann::json::parse(contentOfPath(path)); } -/** -std::string directory_manager::read_cover_art(const std::string& source) -{ - auto source_path = fs::path(source); - - std::fstream cov(source, std::ios::in | std::ios::binary); - - cov.seekg(0); - - std::stringstream buf; - std::copy(std::istreambuf_iterator(cov), - std::istreambuf_iterator(), - std::ostreambuf_iterator(buf)); - - return buf.str(); -} - -void directory_manager::copy_stock_to_root(const std::string& target, const std::string& buff) -{ - std::cout<<"starting process"<(); lr.token_type = post_res["token_type"].get(); lr.expiration = post_res["expires_in"].get(); @@ -87,14 +87,14 @@ bool token_manager::is_token_valid(std::string& auth, Scope scope) return false; } -auth_credentials token_manager::parse_auth_credentials(std::string_view path) +Model::auth_credentials token_manager::parse_auth_credentials(std::string_view path) { auto exe_path = directory_manager::configPath(path); exe_path.append("/authcredentials.json"); auto con = directory_manager::credentialConfigContent(exe_path); - auth_credentials auth; + Model::auth_credentials auth; auth.uri = "https://"; auth.uri.append(con["domain"]); auth.api_identifier = con["api_identifier"]; diff --git a/src/utilities/metadata_retriever.cpp b/src/utilities/metadata_retriever.cpp index ee675af..c39c532 100644 --- a/src/utilities/metadata_retriever.cpp +++ b/src/utilities/metadata_retriever.cpp @@ -17,10 +17,10 @@ namespace fs = std::filesystem; -Song metadata_retriever::retrieve_metadata(std::string& song_path) +Model::Song metadata_retriever::retrieve_metadata(std::string& song_path) { TagLib::FileRef file(song_path.c_str()); - Song song; + Model::Song song; song.title = file.tag()->title().toCString(); song.artist = file.tag()->artist().toCString(); song.album = file.tag()->album().toCString(); @@ -48,7 +48,7 @@ Song metadata_retriever::retrieve_metadata(std::string& song_path) return song; } -Cover metadata_retriever::update_cover_art(const Song& song, Cover& cov, const std::string& stockCoverPath) +Model::Cover metadata_retriever::update_cover_art(const Model::Song& song, Model::Cover& cov, const std::string& stockCoverPath) { TagLib::MPEG::File sngF(song.songPath.c_str()); auto tag = sngF.ID3v2Tag(); @@ -94,7 +94,7 @@ Cover metadata_retriever::update_cover_art(const Song& song, Cover& cov, const s return cov; } -void metadata_retriever::update_metadata(Song sng_updated, const Song sng_old) +void metadata_retriever::update_metadata(Model::Song sng_updated, const Model::Song sng_old) { std::cout<<"updating metadata"<