singledatabasequerytest.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "singledatabasequerytest.h"
  2. #include <Cutelyst/Plugins/Utils/Sql>
  3. #include <QtSql/QSqlQuery>
  4. #include <QtCore/QThread>
  5. #include <QtCore/QJsonDocument>
  6. #include <QtCore/QJsonObject>
  7. SingleDatabaseQueryTest::SingleDatabaseQueryTest(QObject *parent) : Controller(parent)
  8. {
  9. }
  10. void SingleDatabaseQueryTest::db_postgres(Context *c)
  11. {
  12. QSqlQuery query = CPreparedSqlQueryForDatabase(
  13. QLatin1String("SELECT id, randomNumber FROM world WHERE id = :id"),
  14. QSqlDatabase::database(QLatin1String("postgres-") + QThread::currentThread()->objectName()));
  15. processQuery(c, query);
  16. }
  17. void SingleDatabaseQueryTest::db_mysql(Context *c)
  18. {
  19. QSqlQuery query = CPreparedSqlQueryForDatabase(
  20. QLatin1String("SELECT id, randomNumber FROM world WHERE id = :id"),
  21. QSqlDatabase::database(QLatin1String("mysql-") + QThread::currentThread()->objectName()));
  22. processQuery(c, query);
  23. }
  24. void SingleDatabaseQueryTest::processQuery(Context *c, QSqlQuery &query)
  25. {
  26. int id = (qrand() % 10000) + 1;
  27. query.bindValue(QStringLiteral(":id"), id);
  28. if (!query.exec() || !query.next()) {
  29. c->res()->setStatus(Response::InternalServerError);
  30. return;
  31. }
  32. QJsonObject obj;
  33. obj.insert(QStringLiteral("id"), query.value(0).toInt());
  34. obj.insert(QStringLiteral("randomNumber"), query.value(1).toInt());
  35. c->response()->setJsonBody(QJsonDocument(obj));
  36. }