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;
}