From 9281293fad03962da06e69fbaf5c43df96d0685a Mon Sep 17 00:00:00 2001 From: kdeng00 Date: Fri, 23 Aug 2019 23:16:42 -0400 Subject: [PATCH] Working on interfacing with the database. Could do queryies via string/cstring but I'm going to try prepared statements --- CMakeLists.txt | 4 ++-- include/database/base_repository.h | 8 +++++++ include/database/coverArtRepository.h | 6 +++++- include/managers/coverArtManager.h | 5 +++++ include/managers/song_manager.h | 7 ------ src/database/base_repository.cpp | 30 ++++++++++++++++++++++++++ src/database/coverArtRepository.cpp | 8 +++++++ src/managers/coverArtManager.cpp | 7 ++++++ src/managers/song_manager.cpp | 31 +++++---------------------- 9 files changed, 70 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3176c6f..8c64957 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,7 +10,7 @@ set(SOURCES src/controller/loginController.hpp src/controller/songController.hpp src/database/base_repository.cpp - #src/database/coverArtRepository.cpp + src/database/coverArtRepository.cpp #src/database/songRepository.cpp src/dto/loginResultDto.hpp src/main.cpp @@ -23,7 +23,7 @@ set(SOURCES ) set(HEADERS include/database/base_repository.h - #include/database/coverArtRepository.h + include/database/coverArtRepository.h #include/database/songRepository.h include/managers/coverArtManager.h include/managers/directory_manager.h diff --git a/include/database/base_repository.h b/include/database/base_repository.h index bc9d74e..d2f6269 100644 --- a/include/database/base_repository.h +++ b/include/database/base_repository.h @@ -10,11 +10,19 @@ class base_repository { public: + base_repository(); + base_repository(const std::string&); protected: + MYSQL* setup_mysql_connection(); MYSQL* setup_mysql_connection(database_connection); MYSQL_RES* perform_mysql_query(MYSQL*, const std::string&); + + database_connection details; private: + void intitalizeDetails(); + + std::string path; }; #endif diff --git a/include/database/coverArtRepository.h b/include/database/coverArtRepository.h index 0678e2c..aaf96ed 100644 --- a/include/database/coverArtRepository.h +++ b/include/database/coverArtRepository.h @@ -3,11 +3,15 @@ #include +#include "database/base_repository.h" #include "models/models.h" -class coverArtRepository +class coverArtRepository : public base_repository { public: + coverArtRepository(const std::string&); + + void saveRecord(const Cover&); private: }; diff --git a/include/managers/coverArtManager.h b/include/managers/coverArtManager.h index 387f059..9e5479a 100644 --- a/include/managers/coverArtManager.h +++ b/include/managers/coverArtManager.h @@ -1,13 +1,18 @@ #ifndef COVERARTMANAGER_H_ #define COVERARTMANAGER_H_ +#include + #include "models/models.h" class coverArtManager { public: + coverArtManager(const std::string&); + Cover saveCover(const Song&, std::string&, const std::string&); private: + std::string path; }; #endif diff --git a/include/managers/song_manager.h b/include/managers/song_manager.h index 66983a7..ed3daca 100644 --- a/include/managers/song_manager.h +++ b/include/managers/song_manager.h @@ -13,13 +13,6 @@ class song_manager public: song_manager(std::string&); - /** - std::string retrieveMusicPath(); - std::string retrieveTempPath(); - */ - - //nlohmann::json pathConfigContent(); - void saveSong(Song&); static void printSong(const Song&); diff --git a/src/database/base_repository.cpp b/src/database/base_repository.cpp index 886c66b..02b68ca 100644 --- a/src/database/base_repository.cpp +++ b/src/database/base_repository.cpp @@ -1,5 +1,26 @@ #include "database/base_repository.h" +#include + +#include "managers/directory_manager.h" + +base_repository::base_repository() +{ } + +base_repository::base_repository(const std::string& path) : path(path) +{ + intitalizeDetails(); +} + +MYSQL* base_repository::setup_mysql_connection() +{ + MYSQL *conn = mysql_init(nullptr); + + auto res = mysql_real_connect(conn, details.server.c_str(), details.username.c_str(), + details.password.c_str(), details.database.c_str(), 0, nullptr, 0); + + return conn; +} MYSQL* base_repository::setup_mysql_connection(database_connection details) { MYSQL *connection = mysql_init(NULL); @@ -23,3 +44,12 @@ MYSQL_RES* base_repository::perform_mysql_query(MYSQL *conn, const std::string& return mysql_use_result(conn); } + +void base_repository::intitalizeDetails() +{ + auto databaseConfig = directory_manager::databaseConfigContent(path); + details.database = databaseConfig.get(); + details.password = databaseConfig.get(); + details.server = databaseConfig.get(); + details.username = databaseConfig.get(); +} diff --git a/src/database/coverArtRepository.cpp b/src/database/coverArtRepository.cpp index 43b6363..94dcbe5 100644 --- a/src/database/coverArtRepository.cpp +++ b/src/database/coverArtRepository.cpp @@ -1 +1,9 @@ #include "database/coverArtRepository.h" + + +coverArtRepository::coverArtRepository(const std::string& path) : base_repository(path) +{ } + +void coverArtRepository::saveRecord(const Cover& cov) +{ +} diff --git a/src/managers/coverArtManager.cpp b/src/managers/coverArtManager.cpp index b5a0fc9..6d186e0 100644 --- a/src/managers/coverArtManager.cpp +++ b/src/managers/coverArtManager.cpp @@ -1,7 +1,12 @@ #include "managers/coverArtManager.h" +#include "database/coverArtRepository.h" #include "utilities/metadata_retriever.h" +coverArtManager::coverArtManager(const std::string& configPath) : path(configPath) +{ } + + Cover coverArtManager::saveCover(const Song& song, std::string& rootPath, const std::string& stockCoverPath) { metadata_retriever meta; @@ -10,5 +15,7 @@ Cover coverArtManager::saveCover(const Song& song, std::string& rootPath, const cov = meta.update_cover_art(song, cov, stockCoverPath); cov.songTitle = song.title; + coverArtRepository covRepo(path); + return cov; } diff --git a/src/managers/song_manager.cpp b/src/managers/song_manager.cpp index aaae62e..f7d29e1 100644 --- a/src/managers/song_manager.cpp +++ b/src/managers/song_manager.cpp @@ -16,31 +16,6 @@ song_manager::song_manager(std::string& x_path) : exe_path(x_path) { } -/** -std::string song_manager::retrieveMusicPath() -{ - std::string pathConfig = directory_manager::configPath(exe_path); - pathConfig.append("/paths.json"); - nlohmann::json config = nlohmann::json::parse(directory_manager::contentOfPath(pathConfig)); - - return config["root_music_path"].get(); -} -std::string song_manager::retrieveTempPath() -{ - auto pathConfig = directory_manager::configPath(exe_path); - pathConfig.append("/paths"); - - return std::string(); -} - -nlohmann::json song_manager::pathConfigContent() -{ - auto path = directory_manager::configPath(exe_path); - path.append("/paths.json"); - - return nlohmann::json::parse(directory_manager::contentOfPath(path)); -} -*/ void song_manager::saveSong(Song& song) { @@ -51,10 +26,13 @@ void song_manager::saveSong(Song& song) song.data = std::move(data); printSong(song); - coverArtManager covMgr; + coverArtManager covMgr(exe_path); auto coverRootPath = directory_manager::pathConfigContent(exe_path)["cover_root_path"].get(); + //const nlohmann::json databaseConfig = directory_manager::databaseConfigContent(exe_path); + auto stockCoverPath = directory_manager::configPath(exe_path); stockCoverPath.append("/CoverArt.png"); + auto cov = covMgr.saveCover(song, coverRootPath, stockCoverPath); } @@ -78,6 +56,7 @@ void song_manager::saveSongTemp(Song& song) std::random_device dev; std::mt19937 rng(dev()); std::uniform_int_distribution dist(1,1000); + tmp_song.append(std::to_string(dist(rng))); tmp_song.append(".mp3");