Example #1
0
Computer ComputerRepository::getComputer(const unique_ptr<QSqlQuery> &query) {
    Computer comp;
    comp.setID(query->value("id").toInt());
    comp.setName(query->value("name").toString().toStdString());
    comp.setType(query->value("type").toString().toStdString());
    comp.setBuildYear(query->value("build_year").toInt());
    comp.setBuilt(query->value("built").toBool());
    return comp;
}
vector<Computer> ComputerRepository::search(string input, string word) {
    db.open();
    vector<Computer> temp;

    QString qinput = QString::fromStdString(input);

    QString likeInput = "%" + qinput + "%";


    QSqlQuery query;

    if(word == "Name") {
        query.prepare("SELECT * FROM Computers c WHERE c.Name LIKE :contains ORDER BY Name;");

    } else if(word == "Build Year") {
        query.prepare("SELECT * FROM Computers c WHERE c.BuildYear LIKE :contains ORDER BY Name");

    } else if(word == "Type") {
        query.prepare("SELECT * FROM Computers c WHERE c.Type LIKE :contains ORDER BY Name");

    } else {
        query.prepare("SELECT * FROM Computers c WHERE c.Built LIKE :contains ORDER BY Name");

    }

    query.bindValue(":contains",likeInput);
    query.exec();

    while(query.next()) {
        Computer c;

        c.setName(query.value("Name").toString().toStdString());
        c.setBuildYear(query.value("BuildYear").toString().toStdString());
        c.setType(query.value("Type").toString().toStdString());
        c.setBuilt(query.value("Built").toInt());
        c.setID(query.value("ID").toInt());

        temp.push_back(c);
    }
    db.close();
    return temp;

}
vector<Computer> ComputerRepository::getComputersFromScientist(Person scientist) {
    db.open();
    vector<Computer> temp;
    QSqlQuery query;
    query.prepare("SELECT * FROM Computers c JOIN Linker l ON l.c_ID = c.ID AND l.p_ID = ?");
    query.addBindValue(scientist.getID());
    query.exec();
    while(query.next()) {
        Computer c;

        c.setName(query.value("Name").toString().toStdString());
        c.setBuildYear(query.value("BuildYear").toString().toStdString());
        c.setType(query.value("Type").toString().toStdString());
        c.setBuilt(query.value("Built").toInt());
        c.setID(query.value("ID").toInt());

        temp.push_back(c);
    }

    db.close();
    return temp;
}
vector<Computer> ComputerRepository::getSortedComputers(string sortOrder) {
    db.open();
    QSqlQuery query;

    if(sortOrder == "Name") {
        query.prepare("SELECT * FROM Computers ORDER BY Name");

    } else if(sortOrder == "Build Year") {
        query.prepare("SELECT * FROM Computers ORDER BY BuildYear");

    } else if(sortOrder == "Type") {
        query.prepare("SELECT * FROM Computers ORDER BY Type");

    } else if(sortOrder == "Built") {
        query.prepare("SELECT * FROM Computers ORDER BY Built");
    } else {
        query.prepare("SELECT * FROM Computers");
    }

    query.exec();

    vector<Computer> temp;

    while(query.next()) {
        Computer c;

        c.setName(query.value("Name").toString().toStdString());
        c.setBuildYear(query.value("BuildYear").toString().toStdString());
        c.setType(query.value("Type").toString().toStdString());
        c.setBuilt(query.value("Built").toInt());
        c.setID(query.value("ID").toInt());

        temp.push_back(c);
    }
    db.close();
    return temp;
}