Program Listing for File tempDB.cpp

Return to documentation for file (include/MainObjects/tempDBObject/tempDB.cpp)

#include "tempDB.hpp"
#include "PDJE_LOG_SETTER.hpp"
bool
tempDB::Open(const fs::path& projectRoot)
{
    if(tempROOT.has_value()) tempROOT.reset();

    tempROOT.emplace();
    bool openRes =
    tempROOT->openDB(
        (projectRoot / fs::path("LOCALDB"))
    );
    if(!openRes){
        critlog("failed to open local database. from tempDB Open. path: ");
        fs::path logPath = (projectRoot / fs::path("LOCALDB"));
        critlog(logPath.generic_string());
    }
    return openRes;
}

bool
tempDB::BuildProject(trackdata& td, std::vector<musdata>& mds)
{
    auto dbposition = tempROOT->getRoot();
    tempROOT.reset();
    try{

        if(!fs::remove_all(dbposition)){
            critlog("failed to remove local database. from tempDB BuildProject. path: ");
            critlog(dbposition.generic_string());
            return false;
        }
    }
    catch(std::exception& e){
        critlog("failed to remove local database. from tempDB BuildProject. ErrException: ");
        critlog(e.what());
        return false;
    }
    tempROOT.emplace();

    if(!tempROOT->openDB(dbposition)){
        critlog("failed to open local database. from tempDB BuildProject. path: ");
        critlog(dbposition.generic_string());
        return false;
    }
    if(!(tempROOT.value() <= td)){
        critlog("failed to push trackdata to local database. from tempDB BuildProject. trackTitle: ");
        critlog(td.trackTitle);
        return false;
    }
    for(auto& i : mds){
        if(!(tempROOT.value() <= i)){
            critlog("failed to push musicdata to local database. from tempDB BuildProject. musicTitle: ");
            critlog(i.title);
            return false;
        }
    }
    return true;
}